异常处理

异常处理机制

  • 抛出异常

  • 捕获异常

异常处理五个关键字

  • try、catch、finally、throw、throws

try catch finally

 package oop.Exception;
 
 public class Test {
     public static void main(String[] args) {
         int a = 1;
         int b = 0;
         try {//try监控区域是否有异常
             System.out.println(a/b);
        }catch (ArithmeticException c){//捕获异常,如果异常则执行
             System.out.println("程序出现异常");
        }finally {//出不出异常都会执行
             System.out.println("finally");
        }
 
    }
 }
 

finally可以不要,假设IO、资源需要关闭,关闭操作可以放在finally里

捕获Error:

 package oop.Exception;
 
 public class Test {
     public static void main(String[] args) {
         int a = 1;
         int b = 0;
         try {//try监控区域是否有异常
             new Test().a();
        }catch (Throwable c){//捕获异常,如果异常则执行,throwable级别最高,能捕获所有异常
             System.out.println("程序出现异常");
        }finally {//出不出异常都会执行
             System.out.println("finally");
        }
 
    }
     public void a(){
         b();
    }
     public void b(){
         a();
    }
 }

可以有多个catch,但捕获级别要从小到大

 package oop.Exception;
 
 public class Test {
     public static void main(String[] args) {
         int a = 1;
         int b = 0;
         try {//try监控区域是否有异常
             new Test().a();
        }catch (Error c) {//捕获异常,如果异常则执行
             System.out.println("Error");
        }
             catch (Exception d){
                 System.out.println("Exception");
            }
             catch (Throwable e){
                 System.out.println("Throwable");
            }
         finally {//出不出异常都会执行
             System.out.println("finally");
        }
 
    }
     public void a(){
         b();
    }
     public void b(){
         a();
    }
 }

throw和throws

 package oop.Exception;
 
 public class Test {
     public static void main(String[] args) {
         try {
             new Test().a(1,0);
        } catch (ArithmeticException e) {
             e.printStackTrace();
        }
 
    }
     //假设这个方法中处理不聊这个异常。方法上抛出异常
     public void a(int x,int y) throws ArithmeticException{
         if(y==0){//主动抛出异常 throw   throws
             throw new ArithmeticException();//一般在方法中使用
        }
         System.out.println(x/y);
    }
 
 }

 

posted @ 2021-09-08 15:49  Bilia  阅读(39)  评论(0编辑  收藏  举报