1.异常的概述分类
异常就是java程序在运行过程中出现的错误
2.jvm默认是如果处理异常的
main方法收到问题时,有两种是处理方式
自己将问题处理,然后运行
自己没有针对问题的处理方式,只有交给调用main的jvm来处理,并将异常名称,异常信息,异常出现的位置
打印在了控制台上,同时将程序停止运行(也就是报错)。
3.try...catch的方式处理异常
try时用来检测异常
catch是用来捕获异常
finally 释放资源
1 int i = 5; 2 int b = 0; 3 try { 4 int c = i/5; 5 } catch (Exception e) { 6 System.out.println(e.getMessage()); // 查看异常信息 7 }
1
try...catch的方式处理多个异常
JDK7以后处理多个异常的方式及注意事项
int i = 5; 2 int b = 0; 3 try { 4 int c = i / 5; 5 } catch (ArithmeticException e) {//只可以捕获除零错误 6 System.out.println("除数不能为零"); 7 } catch (ArrayIndexOutOfBoundsException e) {//只可以捕获下标越界 8 System.out.println("索引越界了"); 9 10 } catch (Exception e) { // Exception e = new NullPointerException(); 11 // 如果把所有的错误都放入Exception里面,完全可以接收异常信息,但是不利于错误的查找 12 System.out.println("出错了"); 13 } 14 System.out.println("over");
finally关键字
1 int i = 5; 2 int b = 0; 3 try { 4 int c = i / 5; 5 //直接退出java虚拟机这是系统级别的退出,jvm不在运行 6 System.exit(0); 7 } catch (Exception e) { 8 System.out.println("出错了"); 9 }finally { 10 //try当中无论是渝澳catch,还是return语句他都会执行 11 //除非退出java虚拟机
//当出现java虚拟机退出时,finally中的语句就不会运行了,java程序直接终止运行
12 System.out.println("aaaaaaaaaaaaaaaaaaaa"); 13 } 14 System.out.println("over");
4.编译期异常和运行期异常的区别
java中异常被分为两类,编译器异常和运行时异常,
当上面出现了add或者surround的时候,就是程序出现了编译器的异常信息,解决方法时要么使用throws或者时使用trycatch进行包围,才能使程序正常运行
编译时异常:在编译某个程序的时候,有可能会有这样那样的事情发生,比如文件找不到,这样的异常就必须在编译的时候处理
如果不处理编译通不过
运行时异常:就是程序员所犯得错误,需要回来修改代码
就像空指针的时候你不赋值为null.索引越界异常,你不越界
5.Throwable的几个常见方法
getMessage() 获取异常信息,返回字符串
toString() 获取异常类名和异常信息,返回字符串
printStackTrace() 获取异常类名和异常信息,以及异常出现在程序中的位置,返回值void