Day11异常

异常

 

Error和Exception

三种类型的异常:

  • 检查性异常

  • 运行时异常

  • 错误ERROR

异常处理框架

Java把异常当作对象来处理。

Day11异常

Day11异常

Day11异常

 

捕获和抛出异常

异常处理五个关键字

  • try, catch, finally, throw, throws

 package com.exception;
 ​
 public class Test {
     public static void main(String[] args) {
 ​
         int a = 1;
         int b = 0;
 ​
         try {
             new Test().test(1,0);
        } catch (ArithmeticException e) {
             e.printStackTrace();
        }
 ​
         //假设要捕获多个异常:从小到大!
 ​
         try { // try监控区域
 ​
             if(b==0){   //throw throws
                 throw new ArithmeticException();    //主动抛出异常
            }
             System.out.println(a/b);
        }catch (ArithmeticException e) { //catch(想要捕获的异常类型!最高的就是Throwable) 捕获异常
             System.out.println("程序出现异常,变量b不能为0");
        }catch (Exception e) {
             System.out.println("Exception");
        }catch (Throwable t) {
             System.out.println("Throwable");
        } finally { //处理善后工作
             System.out.println("finally");
        }
 ​
         //finally 可以不要finally,假设IO,资源,关闭!
 ​
    }
 ​
     public void a(){
         b();
    }
     public void b(){
         a();
    }
     
     //假设这个方法中,处理不了这个异常。方法上抛出异常
     public void test(int a, int b) throws ArithmeticException{
         if(b==0){   //throw throws
             throw new ArithmeticException();    //主动抛出异常,一般在方法中使用
        }
         System.out.println(a/b);
    }
 }
 ​
 package com.exception;
 ​
 public class Test2 {
     public static void main(String[] args) {
         int a = 1;
         int b = 0;
 ​
         //Ctrl + Alt + t
         try {
             System.out.println(a/b);
        } catch (Exception e) {
             e.printStackTrace(); //打印错误的栈信息
        } finally {
 ​
        }
    }
 }
 ​

 

自定义异常及经验小结

Day11异常

IDEA快捷键:Ctrl + Alt + t 用一些语句包裹这段代码,比如 if else, try catch。

双击shift 查找。

Day11异常

 package com.exception.demo02;
 ​
 //自定义的异常类
 public class MyException extends Exception {
 ​
     //传递数字>10;
     private int detail;
 ​
     public MyException(int a) {
         this.detail = a;
    }
 ​
     //toString:异常的打印信息
     @Override
     public String toString() {
         return "MyException{" +
                 "detail=" + detail +
                 '}';
    }
 }
 ​
 package com.exception.demo02;
 ​
 public class Test {
 ​
     //可能会存在异常的方法
 ​
     static void test(int a) throws MyException {
 ​
         System.out.println("传递的参数为" + a);
 ​
         if (a>10){
             throw new MyException(a); //抛出
        }
 ​
         System.out.println("OK");
    }
 ​
     public static void main(String[] args) {
         try {
             test(11);
        } catch (MyException e) {
             System.out.println("MyException=>" + e);
        }
    }
 }
 ​

 

上一篇:异常类处理


下一篇:Java集合与数据结构-反射,枚举以及Lambda表达式