常用的異常處理方法有:
一、try()catch() 語句
二、throw / throws 語句
三、自定義異常類
眾所周知,當程式執行過程中,如果遇到了錯誤(比如陣列下標越界,空指標等)程式就會自動終止,但這種錯誤一般是偶然的,可能是使用者輸入不呵呵程式編寫者的意圖導致,而不是程式本身問題,這是我們要做的,是讓操作者知道發生了什麼事情,而不是直截了當的結束程式,這時我們就用到了異常處理(語句發生錯誤時,只丟擲異常,而不結束程式)。
這裡一原始碼為例 詳細介紹一下:
原理剖析:
將可能發生異常的語句放在 tr() 中,執行到try這一行時,如果無異常,則正常執行 try() 中語句,執行完 try() 內語句之後,程式自動跳過 catch() 語句,去執行 catch() 之後的語句。
反之,如果在執行 try() 內語句時,出現異常情況,則執行跳轉到catch()語句中,進行異常處理,一處處以之後不再回到try的()內,而是結束try()catch()內的所有操作,去執行後面的catch語句後面的語句。
舉個例子就明白了:
public class classtext
} catch (exception e)
system.out.println("但是上面丟擲異常後\n程式並沒有直接結束\n"
+ "而是跳出try()catch()語句\n正常執行本條輸出語句");
}}
輸出如下:可以看到,發生異常後依然執行了後面的輸出語句。
很多出初學者一直把throw / throws 語句,看作兩種不同的異常處理方法,其實他們可以看作乙個整體,throw語句可以看作異常的處理語句,而throws我們則可以將其模擬為『extends』 它的主要作用是宣告該方法(體內存在throw語句的方法,需要throws或者說我們可以看作需要『繼承/鏈結』,該異常型別的原型),舉個例子大家就明白了:
private static void textthrow_throws(int radius) throws exception
}
這樣一來throw/throws 的用法就顯而易見了。
但是在寫完throw/throws 語句後,異常處理並沒有結束,因為這裡只是簡單宣告了,我的這個成員方法中的可能會丟擲異常,並沒有寫具體該如何處理這個異常,所以這是在主函式中,就要用try()catch()將他們包圍。描述好具體的處理異常方法:完整測試**如下:
public class classtext catch (exception e)
system.out.println("程式正常結束~");
} private static void textthrow_throws(int radius) throws exception
}}
我們再看看輸出範例:
自定義異常類是逃不開,也是新手接觸最少的,其實它的基本使用方法還是很簡單的,自定義異常處理類,只包括兩部分:(1)、類的構造方法,構造方法的建立則非常簡單,其實只要繼承父類(比如 exception類 )的構造方法即可。(2)、重寫tostring()函式,這是最重要的一點,再tostring函式中,描述具體發生了什麼錯誤導致了異常的丟擲。這樣一來使用者才知道究竟是發生了什麼錯誤
這裡結合throw/throws 舉個例子就很好明白了:
1.首先自定義乙個異常類:
public class arrayindexexception extends exception
@override
public string tostring()
}
如上所示就是乙個最基本的自定義異常類 ,它繼承了exception 並且重寫了構造方法以及tostring方法2.現在我們嘗試再主函式中呼叫它
public class classtext catch (arrayindexexception e)
system.out.println("go on !");
for(int j = 0 ; j < textarray.length ; j++ )
system.out.print(textarray[j] + "\t");//再越界之前的數成功賦值
} private static void textsetarray(int textarray) throws arrayindexexception
}}
如上圖所示,如果發生了異常,這才catch()語句中聲稱自定義的異常物件,並輸出具體資訊:
丟擲異常 自定義異常
1 try catch try catch是這之間所包含的 如果出現異常時捕獲他,並進行處理的,如果 之間有錯誤,不會影響程式繼續執行下去,程式會繼續往後執行。2 throw 是在程式中明確丟擲引發的異常,比如throw new exception 3 finally 不管有沒有異常程式段中都會被執...
OC丟擲異常與自定義異常類
main.m oc丟擲異常與自定義異常類 created by goddog on 15 1 11.1.自行丟擲異常,應該使用 throw語句,throw語句可以單獨使用,throw語句丟擲的不是異常類,而是乙個異常例項。myexception.h oc丟擲異常與自定義異常類 created by ...
如何丟擲異常,自定義異常
定義乙個方法,丟擲 陣列越界和算術異常 多個異常 用 隔開 public void test1 int x throws arrayindexoutofbound ception,arithmeticexception 資料越界異常 else if x 1 算術異常 else if x 2 publ...