20.java当中的异常
- 什么是异常
- 异常:中断了正常指令流的事件
- 异常的分类

- uncheck exception
classTest{publicstaticvoid main(String args[]){System.out.println(1);//uncheck exceptionint i =1/0;System.out.println(2);}}
结果:
D:\work\src>javac Test.java
D:\work\src>java Test
1
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Test.main(Test.java:5)
- check exception
- 包括exception这个类以及exception除了runtimeException之外的子类
classTestCheck{publicstaticvoid main(String args []){//check exceptionThread.sleep(1000);}}
结果:
D:\work\src>javac TestCheck.java
TestCheck.java:4: 错误: 未报告的异常错误InterruptedException; 必须对其进行捕获或声明以便抛出
Thread.sleep(1000);
- try...catch...finally结构的使用方法
- 如果try里面的代码出现异常就执行catch中的代码,不出异常就不执行catch中的代码,而finally中的代码都会执行,称为异常的窗口
- 对异常进行捕捉
classTest{publicstaticvoid main(String args[]){System.out.println(1);//uncheck exceptiontry{//打开文件System.out.println(2);int i =1/0;System.out.println(3);}catch(Exception e){e.printStackTrace();System.out.println(4);}finally{System.out.println("finally");//关闭文件}System.out.println(5);}}
结果:
D:\work\src>javac Test.java
D:\work\src>java Test
1
2
java.lang.ArithmeticException: / by zero
at Test.main(Test.java:8)
4
finally
5
- throw的作用
- 如果一个异常java虚拟机无法判断,可以在出现异常的时候,生成一个异常对象,然后用throw+异常对象,抛出异常
classUser{privateint age;publicvoid setAge(int age){if(age <0){RuntimeException e =newRuntimeException();throw e;}this.age = age;}}
classTest{publicstaticvoid main(String args []){User user =newUser();user.setAge(-20);}}
结果:
D:\work\src>javac *.java
D:\work\src>java Test
Exception in thread "main" java.lang.RuntimeException
at User.setAge(User.java:6)
at Test.main(Test.java:4)
- throws的作用
- 声明一个函数有可能会出现异常
- 函数不会处理,而在调用这个函数的地方,对这个异常进行处理
classUser{privateint age;publicvoid setAge(int age) throws Exception{if(age <0){RuntimeException e =newRuntimeException("年龄不能为负数");throw e;}this.age = age;}}
classTest{publicstaticvoid main(String args []){User user =newUser();try{user.setAge(-20);}catch(Exception e){System.out.println(e);}}}
结果:
D:\work\src>javac *.java
D:\work\src>java Test
java.lang.RuntimeException: 年龄不能为负数

浙公网安备 33010602011771号