參考官方文件異常和異常處理(c# 程式設計指南)
異常是最終全都派生自 c 的型別。system.exception
類有幾個非常有用的屬性:
自定義異常類要繼承自system.exception
, 派生類應至少定義四個建構函式
可參考part 42 - c# tutorial - custom exceptions
如下:
[serializable()]
public
class invaliddepartmentexception : system.exception
public
invaliddepartmentexception(string message) : base(message)
public
invaliddepartmentexception(string message, system.exception inner) : base(message, inner)
// a constructor is needed for serialization when an
// exception propagates from a remoting server to the client.
protected
invaliddepartmentexception(system.runtime.serialization.serializationinfo info,
system.runtime.serialization.streamingcontext context)
}
參考inner exceptions
using system;
using system.io;
class exceptionhandling
", result);
}catch (exception ex)
else}}
catch (exception ex)
" + ex.message);
//檢查內部的exception是否為null
if(ex.innerexception != null)
", ex.innerexception.message);}}
}}
如果輸入10/0
,控制台輸出如下的資訊:
enter first number
10enter second number
0current or outer exception = c:\sample files\log.txt does not exist
inner exception = 嘗試除以零。
在下列條件要捕獲異常:
1.很好地理解可能會引發異常的原因,並且可以實現特定的恢復,例如當捕獲到filenotfoundexception
物件時提示使用者輸入新的檔名。
2.可以建立和引發乙個新的、更具體的異常
int getint(int array, int
index)
catch(system.indexoutofrangeexception e)
}
3.想要先對異常進行部分處理,然後再將其傳遞以進行額外處理。 在下面的示例中,catch
塊用於在重新引發異常之前將條目新增到錯誤日誌
try
catch (system.unauthorizedacces***ception e)
異常用於指示在執行程式時發生了錯誤。 此時將建立乙個描述錯誤的異常物件,然後使用throw
關鍵字引發。 然後,執行時搜尋最相容的異常處理程式。
當存在下列一種或多種情況時,程式設計師應引發異常:
1.方法無法完成其定義的功能。例如,如果一種方法的引數具有無效的值:
static
void copyobject(sampleclass original)
}
2.根據物件的狀態,對某個物件進行不適當的呼叫。乙個示例可能是嘗試寫入唯讀檔案。 在物件狀態不允許操作的情況下,引發invalidoperationexception
的乙個例項或基於此類的派生的物件。 以下為引發invalidoperationexception
物件的方法的示例:
class
programlog
void writelog()
// else write data to the log and
return.
}}
3.方法的引數引發了異常。在這種情況下,應該捕獲原始異常,並建立乙個argumentexception
例項。 應將原始異常傳遞給argumentexception
的建構函式作為innerexception
引數:
static
int getvaluefromarray(int array, int
index)
catch (system.indexoutofrangeexception ex)
}
C 異常處理
結構化異常 structured exception vs c 異常 c exception 大家都知道c 異常是c 語言的乙個特性,使用者可以使用throw的方式來丟擲異常,try catch 來捕獲異常。結構化異常是諸如,zero divided,access violations等異常,這些異...
c 異常處理
一 概述 c 自身有著非常強的糾錯能力,發展到如今,已經建立了比較完善的異常處理機制。c 的異常情況無非兩種,一種是語法錯誤,即程式中出現了錯誤的語句,函式,結構和類,致使編譯程式無法進行。另一種是執行時發生的錯誤,一般與演算法有關。關於語法錯誤,不必多說,寫 時心細一點就可以解決。c 編譯器的報錯...
C 異常處理
程式設計師常常忽視異常處理的重要性,這給他們自己的 造成相當大損害。本文將討論如何在c 中使用異常處理,並介紹在應用 中新增 片段以防止某些錯誤的一些簡單方法,這些錯誤可能導致程式異常終止。結構化異常處理 net框架提供一種標準的錯誤報告機制稱為結構化異常處理。這種機制依賴於應用中報告錯誤的異常。在...