java之異常(基本概念)
阿新 • • 發佈:2019-02-05
什麼是異常
異常是指程式可以編譯,由於程式內部或外部的原因造成的問題。並不等同於錯誤。錯誤是指語法上的錯誤等導致程式碼不能編譯。
java中所有的異常類都是從Throwable繼承來的。Error類是jvm內部出現資源耗盡等問題時報的異常,這類異常往往無法解決。我們這裡所講述的異常都是Exception類中的。
異常可以分為執行時異常(RuntimeException)和已檢查異常(IOException等)。
執行時異常往往編譯沒有問題,在執行時出現錯誤的異常。例如:陣列越界等問題。
執行結果為:
已檢查異常是程式碼本身沒有問題,但有可能會出現一些問題,在編寫程式碼時需要主動丟擲異常或對異常進行捕獲。例如:檔案找不到異常。
型別異常詳細分類參照: 菜鳥教程之異常處理
怎麼處理異常
一般對異常進行簡單的處理,有兩種處理方式,捕獲和丟擲。
1. 捕獲異常:使得異常不被拋到方法之外,也不需要throws規範
try{
//可能發生異常的程式碼
}
catch(異常的型別宣告){
//發生異常時執行的程式碼
}
finally{
//無論是否發生異常都會執行的程式碼
}
package com.ar.dgh.tese4;
import java.io.UnsupportedEncodingException;
public class Test{
public static void example()
{
String str = null ;
byte[] bytes={122,121,120};
try {
str = new String(bytes,"utf-8");
} catch(UnsupportedEncodingException uee) {
}
System.out.println(str);
}
public static void main(String[] args){
example();
}
}
執行結果為:
zyx
finally可以省略,catch可以有多個,捕獲多個不同的異常。也可以只有try程式碼塊。
2. 丟擲
throw
丟擲的是異常的物件,存在在方法體內,執行一定會丟擲異常。throws
丟擲的是異常的型別,宣告在方法體外,可能會發生異常。
import java.io.UnsupportedEncodingException;
public class Test{
public static void example() throws UnsupportedEncodingException
{
String str = null;
byte[] bytes={122,121,120};
str = new String(bytes,"utf-8");
System.out.println(str);
}
public static void main(String[] args){
example();//此時的方法是不能夠被呼叫的,顯示異常
}
無論是丟擲異常還是捕獲異常都是消極的處理方式,而要解決異常還需要程式設計師來解決。
自定義異常
在遇到無法用異常類描述的錯誤時,可以自己定義異常。
定義一個派生於Exception的類,或者其子類的類
定義的類包含兩個構造器:預設的構造器,帶有詳細描述資訊的構造器