异常

分类

  受检异常:写代码时必须处理的异常,必须要捕获

  运行时异常

  • 对于受检异常中的文件不存在异常,只需要catch 住,继续运行程序就行
    • 受检异常程序员是可以处理的,或者说这种异常是允许发生的
    • 是一种意料之内的情况
    • 从语法上来说,受检异常是exception类的子类但不能是runtimeexception类的子类
    • 如果方法里面抛出了受检异常,那么方法的签名必须throws这个异常,调用方也会被强制try-catch处理这个异常,这是编译级别的限制
  • 对于非受检异常比如数组越界或者除零异常,
    • 这种属于一种程序的bug,按照道理来讲是程序员编程不当导致的,这种bug一旦发生应该消除
    • 如果是runtimeexception或者error的子类那就是非受检的,这种异常在方法内抛出不需要在签名处throws
 1 public class App {
 2     public static void main(String[] args) throws IOException {
 3         demo01();
 4         demo02(1);
 5     }
 6 
 7     private static void demo02(int num) throws IOException {
 8         if(num>5 && num<10){
 9             //抛出运行时异常,依靠关键字throw
10             throw new IllegalArgumentException("运行时异常");
11         }
12         if(num>10 && num <15){
13             //抛出受检异常,受检异常抛出的时候得处理他
14             //1.处理第一种方式,使用关键字throws,表示如果有调用demo02()方法的,要处理IOException异常
15             throw new IOException("受检时异常");
16             //2.第二种处理方式,
17            // try{
18            //     throw new IOException("受检异常抛出")
19            // }catch (IOException e){
20            //     e.printStackTrace();
21            // }
22         }
23     }

  抛异常程序中断

异常捕获

 finally是不要写return的,写了后异常和正常数据都拿不到了

 1 public class App {
 2     public static void main(String[] args) throws IOException {
 3         demo01();
 4         demo02(1);
 5         demo03(0);
 6     }
 7 
 8     //在执行return之前都先执行一遍finally
 9     //如果传入的num=0,输出1111, 3333,4444,-2
10     //如果传入的num=1,输出111,222,4444,-2
11     private static int demo03(int num) {
12         try{
13             //这里是正常的业务代码,要被我处理的代码
14             System.out.println("11111111");
15             int result = 1024/num;
16             System.out.println("22222222");
17             return result;
18         }catch (Exception e){
19             //这里是出来问题怎么处理的
20             System.out.println("33333333");
21             return -1;
22         }finally {
23             //最后的首尾动作
24             System.out.println("444444444");
25             return -2;
26         }
27     }

 

  

  

posted on 2019-12-17 23:27  yolanda935  阅读(181)  评论(0)    收藏  举报

导航