异常相关知识

目录

一、异常的基本语法

二、异常的相关处理

1、在程序中不处理异常

2、处理异常的情况

3、异常也是类

4、输出异常的位置以及原因

 5、对于finally代码块

​ 6、异常的处理流程

三、throw和 throws关键字

1、throws关键字

 2、throw关键字

四、异常体系

1、异常体系种类

 2、自定义异常

 五、相关代码


异常:程序没有按照预计的结果运行,在运行过程中发生了错误

一、异常的基本语法

try{

//可能会产生异常的代码,例如除0异常,数组越界异常,空指针异常等等;

}catch(异常类型  引用){

//出现异常以后如何处理

}finally{            

//可以不写finally

//异常的出口,最终必定执行的代码

}

二、异常的相关处理

1、在程序中不处理异常

 异常代码后面的代码就不会再执行了

2、处理异常的情况

3、异常也是类

catch代码块只能捕捉相应类型的“异常”类型

此时异常的原因是空指针异常,所以此时catch的数组越界异常处理就没用了,解决方法就是用到多个catch块

 Exception是所有异常类的父类,当不确定会产生什么类型的异常时,就可以在catch块中使用Exception,就可以接收所有的异常类型。

4、输出异常的位置以及原因

调用异常对象的printstackTrace方法

 5、对于finally代码块

无论是否有异常产生,最终都会执行finally代码块的代码

6、异常的处理流程

三、throw和 throws关键字

1、throws关键字

用在方法声明上,表示该方法可能会产生的异常类型,但是在本方法中不处理该异常,当异常产生就向上抛给调用者

 2、throw关键字

用在方法内部,表示认为产生异常对象并输出

异常对象的产生都是在发生异常之后有JVM产生的,若需要认为产生异常对象,就使用throw关键字

四、异常体系

1、异常体系种类

JDK内部异常的继承关系,在java中异常分为两大类:

①''受查异常'':必须在编译阶段显示异常处理,否则编译就会报错

RuntimeExpetion(运行时异常)

ArrayIndexofBoundsExpetion(数组越界异常)

Erro(程序内部错误,一般来说,出现这种错误,程序就没办法在执行下去,只能退出程序)

②"非受查异常":在编译阶段可以不显示异常处理(不使用try  catch\throws),也就是图中蓝色部分的内容,也就是图中的红色部分

 2、自定义异常

JDK内部定义了好做异常类,但是在某些场景下,出现的错误需要我们自定义异常(用户登录时,用户名不对的异常),自定义异常,只需要继承相关的两个父类就可以。

若希望这个异常必须显示处理就继承Exception,如果这个异常不需要处理,就继承RuntimeException父类

public class MYException {

    private static final String Username="张三";
    private static final int Password=12345;

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入用户名: ");
        String username=scanner.nextLine();
        System.out.println("请输入密码: ");
        int password=scanner.nextInt();
        if(!Username.equals(username)){
            throw new UserNameExcepton("用户名输入错误!!!");
        }
        if (Password!=password){
            throw new PasswordException("密码输入错误!!!");
        }
    }
}
    class UserNameExcepton extends RuntimeException{
    public UserNameExcepton(String message){
        super(message);
    }
}
    class PasswordException extends RuntimeException{
    public PasswordException(String message){
        super(message);
    }
}

 五、相关代码

任枭雄/rocket_class_Grammer - Gitee.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值