for (int i = 0; i <= 2; i++)
tryint number = convert.toint32("aa");
catch (exception ex)
throw new myuserexception(ex.message);
myuserexception是自定義的異常類,把異常資訊記入到異常文字error.txt
public class myuserexception : exception
private string messageinfo = string.empty;
public myuserexception(string message)
: base(message)
messageinfo = message;
operateexception(message);
private void operateexception(string message)
string path = directory.getcurrentdirectory() + @"\error.txt";
if (file.exists(path))
filestream nfile = new filestream(path, filemode.open);
streamwriter sw = new streamwriter(nfile);
sw.writeline(message);
sw.close();
這是乙個很常見的異常捕捉,但是如此的丟擲異常並同時寫入異常文字後,程式會終止。我們也可以在catch中不用丟擲異常,也可寫乙個異常操作類,專門寫入異常資訊,可讓程式繼續進行,但是我經常看到大家在問乙個問題就是:如何讓存在異常後,讓程式繼續進行。
我看到很多人的回答是catch中不寫任何**,這樣回答其實是不負責任的,很多情況下,比如下列**
tryfor (int i = 0; i <= 2; i++)
int number = convert.toint32("aa");
}catch ()
string name=」***」;
這裡我把異常捕捉寫在迴圈外面,如果只是簡單的catch中不寫任何**就讓程式繼續執行迴圈體,顯然這裡是做不到的,程式會繼續往下執行string name=」***」;而不會去執行迴圈體,所以我們可以考慮把異常捕捉寫到迴圈體內,catch中什麼都不寫,或者寫continue讓迴圈繼續
for (int i = 0; i <= 2; i++)
tryint number = convert.toint32("aa");
catch ()
其實異常捕捉有人說太多try會影響效能,但是實際上,有try和沒有try效能差不多,只是在偶爾出現異常後,執行到catch時會消耗很多時間,但是事實上異常並不時時發生,用這點時間換取捕捉到的異常還是值得的,只要你不要把異常捕捉作為程式的邏輯設計,但是不可以否認的是有try catch在編譯時是需要耗一些時間的,因為編譯模式內要回填異常的處理位址。
.net在產生異常時是逐步向外層查詢處理程式的,因此可以說捕獲的越早效率越高.如果當前應用程式沒有對異常進行處理,就交給runtime,在這種情況下,效率才是最低的,而且比較難於處理。
我曾經看過一篇文章,講述的是丟擲異常時,是catch內部丟擲例項化異常類效率高,還是在catch呼叫靜態方法,然後在靜態方法中丟擲異常效率高,例如
private int getitone(int key) {
int value;
if (!_dict.trygetvalue(key,out value)) {
throw new argumentoutofrangeexception("key");
return value;
和private int getittwo(int key) {
int value;
if (!_dict.trygetvalue(key, out value)) {
throwargumentoutofrangeexception();
return value;
private static void throwargumentoutofrangeexception() {
throw new argumentoutofrangeexception("key");
所以說如果自定義乙個靜態的異常類,然後throw還是有優勢的。
C 異常處理
結構化異常 structured exception vs c 異常 c exception 大家都知道c 異常是c 語言的乙個特性,使用者可以使用throw的方式來丟擲異常,try catch 來捕獲異常。結構化異常是諸如,zero divided,access violations等異常,這些異...
c 異常處理
一 概述 c 自身有著非常強的糾錯能力,發展到如今,已經建立了比較完善的異常處理機制。c 的異常情況無非兩種,一種是語法錯誤,即程式中出現了錯誤的語句,函式,結構和類,致使編譯程式無法進行。另一種是執行時發生的錯誤,一般與演算法有關。關於語法錯誤,不必多說,寫 時心細一點就可以解決。c 編譯器的報錯...
C 異常處理
程式設計師常常忽視異常處理的重要性,這給他們自己的 造成相當大損害。本文將討論如何在c 中使用異常處理,並介紹在應用 中新增 片段以防止某些錯誤的一些簡單方法,這些錯誤可能導致程式異常終止。結構化異常處理 net框架提供一種標準的錯誤報告機制稱為結構化異常處理。這種機制依賴於應用中報告錯誤的異常。在...