Java的异常

Java的异常

异常处理机制

  1. 抛出异常

  2. 捕获异常

异常处理五个关键字:try、catch、finally、throw、throws

try、catch、finally

快捷键,选中可能出现异常的部分,Ctrl + Alt + T。用try catch finally

1、try中是语句

2、catch是捕获的异常类型。捕获的时候,就像if elseif else if ... else一样,可以有选择的捕获

    (需要注意:当需要捕获多个异常时,要从小往大捕)。

    在多重catch块后,最好加一个catch(Exception)来处理可能被遗漏的异常。

 

3、finally是不管有无异常都会执行的语句(一般是IO流的关闭等)

 

package com.WZ.Demo.Application;
public class Application {
   public static void main(String[] args) {
      int a = 3;
      int b = 0;
       try {
           int c = a/b;
      } catch (Error e) {      //捕获Error
           System.out.println("Error");
      } catch (Exception e) {  //捕获Exception
           System.out.println("Exception");
      } catch (Throwable t) {  //捕获Throwable
           System.out.println("Throwable");
      } finally {  //善后工作
           System.out.println("finally");
      }
  }
}

输出:

Exception

finally

 

throw、throws

这两个都是自己设定一种情况下,主动抛出异常

二者的区别:

1. throw: throw是语句抛出一个异常,一般是在代码块的内部,当程序出现某种逻辑错误时由程序员主动抛出特定类型的异常

2. throws:throws是方法可能抛出异常的声明,用在声明方法时,表示该方法可能抛出异常,然后交给上层调用它的方法处理

3. throw和throws区别:
    throw出现在函数体,throws出现在方法函数头
    throw是抛出了异常,执行throw则一定是抛出了某种异常,throws是表示出现异常的一种可能性,并不一定会抛出这些异常

 

1. throw

throw方法一

下面用throw抛出异常后,程序不会往下走。

即:new Application().test(1,0);这一句执行完,抛出异常,程序就停止了,下面语句 System.out.println("继续往下走");不再往下走。

package com.WZ.Demo.Application;

public class Application {
   public static void main(String[] args) {

       new Application().test(1,0);
        System.out.println("继续往下走");
    }

   public void test(int a, int b) {
       if (b == 0) {
           throw new ArithmeticException();
      }
  }
}

输出:

Exception in thread "main" java.lang.ArithmeticException

      at com.WZ.Demo.Application.Application.test(Application.java:11)

      at com.WZ.Demo.Application.Application.main(Application.java:6)

throw方法二

下面用throw抛出异常后,用try catch等捕获异常,然后程序继续往下走。

即:new Application().test(1,0);这一句执行完,抛出异常,捕获异常,程序不停止,下面语句 System.out.println("继续往下走");接着往下走。

package com.WZ.Demo.Application;
public class Application {
   public static void main(String[] args) {
       try {
           new Application().test(1,0);
      } catch (Exception e) {
           e.printStackTrace();
      }
       System.out.println("继续往下走");
  }

   public void test(int a, int b){
       if (b == 0) {
           throw new ArithmeticException();
      }
  }
}

输出:

Exception in thread "main" java.lang.ArithmeticException at com.WZ.Demo.Application.Application.test(Application.java:11) at com.WZ.Demo.Application.Application.main(Application.java:6)

继续往下走

2. throws

 

package com.WZ.Demo.Application;
public class Application {
   public static void main(String[] args) {
       try {
           new Application().test(1,0);
      } catch (Exception e) {
           e.printStackTrace();
      }
       System.out.println("继续往下走");
  }

   public void test(int a, int b) throws ArithmeticException{
       if (b == 0) {
           throw new ArithmeticException();
      }
  }
}

输出:

Exception in thread "main" java.lang.ArithmeticException at com.WZ.Demo.Application.Application.test(Application.java:11) at com.WZ.Demo.Application.Application.main(Application.java:6)

继续往下走

 

 

posted @ 2020-02-15 13:32  WZ_BeiHang  阅读(135)  评论(0编辑  收藏  举报