Java 產生的例外都是一個物件(屬於Throwable類別或其子類別的副本)
Throwable 類別擁有兩個直接的子類別
1. Error 類別 : 屬於JVM 的嚴重錯誤,這種錯誤會導致程式終止執行,所以並無法使用例外處理處理這種錯誤.
2. Exception 類別:
Excepton class 擁有一個子類別RuntimeException,這個類別的子類別是一些常見的例外.
如
ArithmeticException 數學運算時產生的例外
ArrayIndexOutOfBoundsException 陣列索引值小於0或超過陣列邊界
ArrayStoreException 陣列元數的型態不符
IllegalArgumentException 方法呼叫時參數型態不符
NullPointerException 物件值為null產生的例外
try{
}
catch(ExceptionType e)
{
}
finally{
}
//example
public class DealMultiException
{
public static void main(String args[])
{
try{
int i;
String args1 = args[0]; //產生超過陣列的例外
for(i=2;i>-1;i--)
System.out.println("計算結果:"+6/i); //Divide by zero exception
}
catch(ArithmeticException e)
{
//show exception info
System.out.println("例外說明: "+e.getMessage());
System.out.print("例外原因");
e.printStackTrace();
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("例外說明: "+e.getMessage());
System.out.print("例外原因");
e.printStackTrace();
}
finally
{
System.out.println("錯誤處理結束");
}
System.out.println("Programe end.");
}
}
//丟出例外
public class MythrowException
{
public static void main(String args[])
{
try
{
//取得參數字串
int value = Integer.parseInt(args[0]);
if(value==0)
//丟出ArithmeticException 例外
throw new ArithmeticException("值為0");
}
catch(ArithmeticException e)
{
//處理ArithmeticException例外
System.out.println("例外說明:"+e.getMessage());
System.out.print("例外原因 : ");
e.printStackTrace();
}
finally
{
System.out.println("錯誤處理結束");
}
}
}
沒有留言:
張貼留言