一、什麼是異常
異常就是程式運作過程中所出現的不正常現象。
try
:把可能發生例外的程式碼包起來,當發生異常時,將例外情況拋出
catch
:捕獲異常並處理
finally
:不管是否發生異常,都會執行
throw
:手動引發一個異常
throws
:定義任何被呼叫方法的異常
線上學習影片推薦:java線上影片
二、異常出現的原因
使用者輸入錯誤;
程式碼的錯誤;
環境的因素;
異常機制保證了程式的健全性!
三、異常的分類空引用異常
下標越界異常
Error與編``譯環境有關,它是Java執行時間的內部錯誤以及資源耗盡錯誤。很難修復,不期望用戶能修復。
四、取得異常訊息程式發生異常的時候,程式就直接從try執行到catch語句區塊,不再繼續執行`在這裡。
public class text3 { public static void main(String[] args) { System.out.println("main开始执行"); text3 a=new text3(); a.text(); System.out.println("main执行结束"); } public void text() { int a; try { a=2/0; System.out.println(a); }catch(ArithmeticException e){ System.out.println("程序发生了异常"); } } }
異常捕獲之後程式才不會斷
public class text3 { public static void main(String[] args) { System.out.println("main开始执行"); text3 a=new text3(); a.text(); System.out.println("main执行结束"); } public void text() { int a; //try { a=2/0; System.out.println(a); //}catch(ArithmeticException e){ //System.out.println("程序发生了异常"); //} } }
異常自己不處理但是得聲明一下。
異常宣告:指一個方法不處理它所產生的異常,而是呼叫層次向上傳遞,誰呼叫的這個方法誰來處理。
五、手動拋出異常throw exception; 參數exception表示要拋出的異常對象,該對像是throwable類的子類,而且只能夠是一個。 public void text1() throws ArithmeticException{
}
public static void main(String[] args) {
Text t=new Text();
try {
t.text();
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage());
}
}
public void text() throws Exception {
//手动抛出异常
throw new Exception("这是手动抛出来的");
}
}
public class Textthrow {
public static void main(String[] args) {
double a=Math.random();
try {
if(a>0.5) {
System.out.println(a+"程序不报错");
}
else {
throw new Exception();
}
}catch(Exception e) {
System.out.println("这是外层捕获的对象"+e);
try {
a=1/0;
}catch(ArithmeticException e1) {
System.out.println("这是内层捕获的对象"+e1);
}finally {
System.out.println("这是内层的finally块");
}
}finally {
System.out.println("这是外层的finally块 ");
}
}
}