首页 > 代码库 > 20.java当中的异常

20.java当中的异常

  • 什么是异常
    • 异常:中断了正常指令流的事件 
 
  • 异常的分类
    技术分享
 
    • uncheck exception
  1. classTest{
  2. publicstaticvoid main(String args[]){
  3. System.out.println(1);
  4. //uncheck exception
  5. int i =1/0;
  6. System.out.println(2);
  7. }
  8. }
结果:
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之外的子类
 
  1. classTestCheck{
  2. publicstaticvoid main(String args []){
  3. //check exception
  4. Thread.sleep(1000);
  5. }
  6. }
结果:
D:\work\src>javac TestCheck.java
TestCheck.java:4: 错误: 未报告的异常错误InterruptedException; 必须对其进行捕获或声明以便抛出
                Thread.sleep(1000);
 
 
  • try...catch...finally结构的使用方法
    • 如果try里面的代码出现异常就执行catch中的代码,不出异常就不执行catch中的代码,而finally中的代码都会执行,称为异常的窗口
    • 对异常进行捕捉
 
  1. classTest{
  2. publicstaticvoid main(String args[]){
  3. System.out.println(1);
  4. //uncheck exception
  5. try{
  6. //打开文件
  7. System.out.println(2);
  8. int i =1/0;
  9. System.out.println(3);
  10. }
  11. catch(Exception e){
  12. e.printStackTrace();
  13. System.out.println(4);
  14. }
  15. finally{
  16. System.out.println("finally");
  17. //关闭文件
  18. }
  19. System.out.println(5);
  20. }
  21. }
结果:
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+异常对象,抛出异常
 
  1. classUser{
  2. privateint age;
  3. publicvoid setAge(int age){
  4. if(age <0){
  5. RuntimeException e =newRuntimeException();
  6. throw e;
  7. }
  8. this.age = age;
  9. }
  10. }
 
  1. classTest{
  2. publicstaticvoid main(String args []){
  3. User user =newUser();
  4. user.setAge(-20);
  5. }
  6. }
 
结果:
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的作用
    • 声明一个函数有可能会出现异常
    • 函数不会处理,而在调用这个函数的地方,对这个异常进行处理
 
  1. classUser{
  2. privateint age;
  3. publicvoid setAge(int age) throws Exception{
  4. if(age <0){
  5. RuntimeException e =newRuntimeException("年龄不能为负数");
  6. throw e;
  7. }
  8. this.age = age;
  9. }
  10. }
 
  1. classTest{
  2. publicstaticvoid main(String args []){
  3. User user =newUser();
  4. try{
  5. user.setAge(-20);
  6. }
  7. catch(Exception e){
  8. System.out.println(e);
  9. }
  10. }
  11. }
 
结果:
D:\work\src>javac *.java
 
D:\work\src>java Test
java.lang.RuntimeException: 年龄不能为负数
 



来自为知笔记(Wiz)



20.java当中的异常