(1) throw:在程式中拋出一個例外物件。
(2) throws:宣告某一類別的方法,指定該方法可以被拋出。
public class Alex1001_1 {
static float division(int num1, int num2){
float ans=0;
try{
if (num2==0)
throw new ArithmeticException("發生除數為0的錯誤");
ans=(float)num1/num2;
}catch(Exception e){
System.out.println("程式錯誤,錯誤原因:"+e.getMessage() );
}finally{
return ans;
}
}
public static void main(String args[]){
System.out.println("12/0="+division(12,0));
}
}
程式執行結果:
程式錯誤,錯誤原因:發生除數為0的錯誤
12/0=0.0
public class Alex1001_2 {
int[] score = {85, 95, 75 };
float average =0;
public void myScore() throws IllegalArgumentException,IndexOfBoxException{
int sum=0;
for( int i=0; i< score.length; i++){
if(score[i] < 0 || score[i] >100)
throw new IllegalArgumentException("數值範圍不符");
sum += score[i];
}
average = (float)sum/score.length;
}
public static void main(String args[]){
Alex1001_2 t = new Alex1001_2();
try{
t.myScore();
System.out.println("平均方數:"+t.average);
}catch (Exception e){
System.out.println("成績算發生錯誤:" + e.getMessage() );
}
}
}
而Exception類別並沒有自己的方法,他的方法都要從Throwable類別中繼承。
回傳值類型 | 方法 | 功用 |
---|---|---|
throwable | fillnStackTrace() | 傳回包含完整堆疊追蹤的Throwable的物件。 |
throwable | getCause() | 傳回造成例外原因的Throwavle物件。 |
String | getLocalizedMessage() | 傳回例外的訊息說明,通常此方法傳回的訊息和getMessage()相同。 |
String | getMessage() | 傳回例外的訊息。 |
StackTracelement[] | getStackTrace() | 傳回包含堆疊追蹤的陣列。 |
throwable | initCause(Throwable cause) | 將cause當作是例外發生的原因。 |
void | printStackTrace() | 顯示堆疊追蹤。 |
void | printStackTrace(PrintStream ps) | 將堆疊追蹤顯示在PrintStream類別的串流物件當中。 |
void | printStackTrace(PrintWriter pw) | 將堆疊追蹤顯示在PrintWriter類別的串流物件之中。 |
void | setStackTrace(StackTraceElement[] ste) | 設定堆疊追蹤元素由getStackTrace()方法傳回、由printStackTrace()方法顯示。 |
String | toString() | 傳回簡短的例外描述字眼。 |