异常类

1.关于异常的总结:

1.Throwable: Error (错误) 和 Exception(异常)的超类

Exception(异常) 是所有异常的超类

2.Exception:包括Exception 本身 、 和其他非运行时期异常、RuntimeException、

3.RuntimeException 无需throws声明、调用者也无需处理、一旦发生需要改代码

4.JVM 处理异常的方式:1.以红字形式将异常对象、异常信息、异常位置打印在控制台 2.终止程序

 

2.异常的产生及处理方式

 

 1 public static void main(String[] args) {
 2 int[] arr = { 1, 2 };
 3 
 4         try {
 5             // 检测可能出现异常的语句
 6             int i = get(arr);
 7             System.out.println(i);
 8 
 9         } catch (Exception e) {
10             // 捕获异常
11             // e.printStackTrace();
12             System.out.println(e);// 打印异常类名和异常信息
13 
14         } finally {
15             System.out.println("一定会被执行的语句");
16 
17         }
18 
19 }
20 
21 public static int get(int[] arr) throws Exception {// 告知调用者
22         if (arr == null) {
23             throw new Exception("数组为空");
24         }
25         if (arr.length < 3) {
26             // 抛出一个指定的一个异常,显示声明
27             throw new Exception("传递数组长度必须大于3");
28         }
29         int i = arr[2] + 1;
30         return i;
31     }

总结:1.如果是编译时期异常必须 throws 声明,要声明多个异常用逗号隔开;运行时期异常不用throws声明

   2.多个catch捕获多个异常时要先捕获子类异常再捕获父类异常,且每个catch捕获的异常不能重复

   3.可以使用try{}finally{}方式处理,只检测不处理,只为了关闭资源

          4.两种异常的导致的原因区别:

            编译时期异常:程序正确,但因为外在的环境条件不满足引发,比如方法的传参,方法本身需要判断参数的合法性而抛出异常

           调用方法时需要处理异常,这并不是方法本身的逻辑错误;

   运行时异常:说明程序本身存在bug,比如方法本身没有判断参数合法性而导致的空指针异常;

    

 

posted @ 2019-03-15 14:46  LiuXiaoZhang  阅读(276)  评论(0编辑  收藏  举报