捕獲異常可以讓即是程序出現錯誤也不會終止運行,還可以處理異常.
一、異常處理框架.
二、異常處理的5個關鍵詞.
1.try 嘗試,
2.catch 捕獲異常.
3.finally :無論是否異常都會執行.
4.throw :用於方法中拋出異常,
5.throws: 用於方法修飾,拋出異常.
三、實例
1.try catch finally 組合使用.
package opp.Exception異常;
public class Demo {
public static void main(String[] args) {
int a = 1;
int b = 0;
try {
System.out.println(a/b);
} catch (ArithmeticException e) {
System.out.println("a/b 出現異常ArithmeticException捕獲成功!");
e.printStackTrace();
}finally {
System.out.println("finally run successfully.經常用於一些異常的處理和流的關閉.");
}
}
}
輸出
a/b 出現異常捕獲成功!
finally run successfully.經常用於一些異常的處理和流的關閉.
java.lang.ArithmeticException: / by zero
at opp.Exception異常.Demo.main(Demo.java:8)
try 後面爲需要捕捉異常的代碼塊
catch()中爲需要捕獲的異常類型
catch(){// 。。。} 花括號中爲捕獲異常成功後的執行語句
finally{} 中爲無論如何都會執行的finally語句通常用於關閉流(IO 資源等.)
2.多重catch語句例子
package opp.Exception異常;
public class Demo2多重catch {
public static void main(String[] args) {
try {
new Demo2多重catch().a();
} catch (Error e) {
System.out.println("第一個catch捕獲Error成功");
}catch (Exception e){
System.out.println("第二個catch捕獲Exception成功");
}catch (Throwable e){
System.out.println("第三個catch捕獲最大的異常類Throwable 成功");
}finally {
System.out.println("finally 語句運行成功");
}
}
public void a(){
b();
}
public void b(){
a();
}
}
輸出結果
第一個catch捕獲Error成功
finally 語句運行成功
結論:
1.捕獲的類型比較大的放到後面.
2…
===============================
3. 實例:throw,在方法中主動拋出異常.
package opp.Exception異常;
public class Throw方法中主動拋出異常 {
public static void main(String[] args) {
new Throw方法中主動拋出異常().devide(1,0);
}
private void devide(int a ,int b){
if(b == 0){
System.out.println("拋出異常成功!");
throw new ArithmeticException();//拋出數據數據異常.
}
}
}
輸出結果:
拋出異常成功!
Exception in thread "main" java.lang.ArithmeticException
at opp.Exception異常.Throw方法中主動拋出異常.devide(Throw方法中主動拋出異常.java:10)
at opp.Exception異常.Throw方法中主動拋出異常.main(Throw方法中主動拋出異常.java:5)
4. throws == try+catch?
處理異常有 拋出throws 和捕獲try ,catch.
拋出經常用於方法中,把異常拋到上一級,讓調用這個方法的位置來try catch.