java面向对象2(22) ​​​​​​​异常处理机制二【重点详解】

java面向对象2(22) ​​​​​​​异常处理机制二【重点详解】

 

小结:

方法声明了异常,这个异常可能会发生。

 

格式: 修饰符 返回值类型 方法名() throws 异常1,异常2

当方法内不知如何处理异常时,可以使用alt+enter,选择将异常throws出去

注意:JVM虚拟机拿到任何throws的异常信息,都会强制停止程序

 

 

 

 

二. 高级案例2:主动抛出异常

public static void main(String[] args) throws Exception {
    run1();
}
//定义run1方法
public static void run1() throws Exception {
    //无限循环
    while (true){
        //1、接收控制台输入的整数
        System.out.println("请输入一个整数:");
        int x = new Scanner(System.in).nextInt();
        //2、对整数进行判断:
        //2.1、大于1000,提示用户,停止程序
        if(x>1000){
            //创建一个异常对象,主动抛出
            throw new Exception("输入的整数太大了");
        }else{
            //2.2、其他情况,整数+1 展示
            System.out.println("展示:"+(x+1));
        }
    }
}

 

小结:

当别人调用我们的方法时,希望他关注某个情况,把这个情况作为异常主动抛出去。

此题目要求我们主动创建异常对象抛出,只要抛出异常给JVM虚拟机,程序就会强制停止

 

  • 格式:throw new Exception("控制台需要展示的异常信息");

  写在异常类构造方法中的字符串会被展示在控制台

 

  • 注意事项:

若主动抛出的是RuntimeException,方法上可以不用加声明  (抛出的格式相同)

 

 

 

三. 高级案例3:捕获方法中,主动抛出的异常

 

public static void main(String[] args) {
    try {
        run1();
    } catch (Exception e) {
        System.out.println("main方法中处理了run1方法抛出的异常");
    }
}
//定义run1方法
public static void run1(){
    //无限循环
    while (true){
        //1、接收控制台输入的整数
        System.out.println("请输入一个整数:");
        int x = new Scanner(System.in).nextInt();
        //2、对整数进行判断:
        //2.1、大于1000,提示用户,停止程序
        if(x>1000){
            //创建一个异常对象,主动抛出
            throw new RuntimeException("输入的整数太大了");
        }else{
            //2.2、其他情况,整数+1 展示
            System.out.println("展示:"+(x+1));
        }
    }
}

 

  • 小结:

  • 建议:测试代码可以一路throws,但回到正规开发中,必须要适当try catch,尽量不要向JVM抛出异常

 

 

四.​​​​​​​总结

  异常处理机制:让Java程序变得更健壮(出现的小问题,能够处理)

 

默认:遇到异常,强制停止程序,展示异常信息(异常名,异常代码位置)

 

 

异常树:

Throwable

Error:大问题。程序设计的缺陷。不建议trycatch,建议重写代码

Exception:小问题。 建议:try catch

非运行异常: 执行中发生的意外

运行异常RuntimeException:程序员编写的代码有小问题

 

try。。。catch。。。

尝试执行,捕获处理异常

Ctrl+alt+T

 

try{

//没有出任何问题,正常运行,catch不会执行

//出现问题,try代码会强制停止,catch执行

}catch(Exception e){

//捕获并处理异常

}

 

 

代码本身没错,希望外界主动关注我,主动抛出异常。

 

格式:throw new RuntimeException();  

​​​​​​​

 

 

 

请给努力中的自己点个赞哦!

每天进步一点点`~~~~~​​​​​​​