,catch,finally,throw。
try:try 塊標識**塊的哪些特定的異常將被啟用。它的後面是乙個或多個 catch 塊。
catch:乙個用於捕獲異常的程式段,將 catch 放在你希望能處理這個異常的地方。「catch」這個關鍵字標誌著異常的捕獲。
finally:finally 保證了無論是否有異常丟擲,此**段中的程式都會被執行。例如,如果你開啟了乙個檔案,那麼不管是否發生了異常,檔案都需要關閉。
throw:當出現問題時,程式會丟擲異常。這項工作是通過使用 throw 來實現的。
語法假設乙個**塊產生了乙個異常,通過使用try和catch的組合可以捕獲這個異常。乙個 try/catch **塊需要放置在可能會產生異常的**段周圍。try/catch **段就像是保護**,它的使用語法如下:
try
catch
(exceptionname e1 )
catch
(exceptionname e2 )
catch
(exceptionname en )
finally
當你的 try 語句塊可能會丟擲多種異常時,你可以列出多種的 catch 語句,以便捕獲不同種類的異常。
c#中的異常類
異常類描述
system.io.ioexception
處理 i/o 錯誤。
system.indexoutofrangeexception
處理當方法指向超出範圍的陣列索引時生成的錯誤。
system.arraytypemismatchexception
處理當陣列型別不匹配時生成的錯誤。
system.nullreferenceexception
處理當依從乙個空物件時生成的錯誤。
system.dividebyzeroexception
處理當除以零時生成的錯誤。
system.invalidcastexception
處理在型別轉換期間生成的錯誤。
system.outofmemoryexception
處理空閒記憶體不足生成的錯誤。
system.stackoverflowexception
處理棧溢位生成的錯誤。
systemexception
其他使用者可處理的異常的基本類
argumentexception
方法的引數是非法的
argumentnullexception
乙個空引數傳遞給方法,該方法不能接受該引數
argumentoutofrangeexception
引數值超出範圍
arithmeticexception
出現算術上溢或者下溢
arraytypemismatchexception
試圖在陣列中儲存錯誤型別的物件
badimageformatexception
圖形的格式錯誤
dividebyzeroexception
除零異常
dllnotfoundexception
找不到引用的dll
formatexception
引數格式錯誤
indexoutofrangeexception
陣列索引超出範圍
invalidcastexception
使用無效的類
invalidoperationexception
方法的呼叫時間錯誤
methodacces***ception
試圖訪問思友或者受保護的方法
missingmemberexception
訪問乙個無效版本的dll
notfinitenumberexception
物件不是乙個有效的成員
notsupportedexception
呼叫的方法在類中沒有實現
nullreferenceexception
試圖使用乙個未分配的引用
outofmemoryexception
記憶體空間不夠
platformnotsupportedexception
平台不支援某個特定屬性時丟擲該錯誤
stackoverflowexception
堆疊溢位
exception:所有異常物件的基類。systemexception:執行時產生的所有錯誤的基類。
indexoutofrangeexception:當乙個陣列的下標超出範圍時執行時引發。
nullreferenceexception:當乙個空物件被引用時執行時引發。
invalidoperationexception:當對方法的呼叫對物件的當前狀態無效時,由某些方法引發。
argumentexception:所有引數異常的基類。異常處理argumentnullexception:在引數為空(不允許)的情況下,由方法引發。
argumentoutofrangeexception:當引數不在乙個給定範圍之內時,由方法引發。
interopexception:目標在或發生在clr外面環境中的異常的基類。
comexception:包含com類的hresult資訊的異常。
sehexception:封裝win32結構異常處理資訊的異常。
sqlexception:封裝了sql操作異常。
c# 以try 和catch 塊的形式提供了一種結構化的異常處理方案。使用這些塊,把核心程式語句與錯誤處理語句分離開。
這些錯誤處理塊是使用 try、catch 和 finally 關鍵字實現的。下面是乙個當除以零時丟擲異常的例項:
using system;
public
void
division
(int num1,
int num2)
catch
(dividebyzeroexception e)
", e);}
finally
", result);}
}static
void
main
(string
args)
}}
編譯執行上述**,得到如下結果:
exception caught: system.dividebyzeroexception:
attempted to divide by zero. at .
.. result:
0
建立自定義異常using system;
namespace userdefinedexception
catch
(tempiszeroexception e)
", e.message);}
console.
readkey()
;}}}
public
class
tempiszeroexception:}
public
class
temperature
else
", temperature);}
}}
編譯執行上述**,得到如下結果:
tempiszeroexception: zero temperature found
丟擲物件
如果某個物件是直接或間接地繼承自 system.exception 類,你可以丟擲這個物件。你可以在 catch 語句塊中用 throw 語句丟擲這個物件:
catch
(exception e)
C 異常處理
結構化異常 structured exception vs c 異常 c exception 大家都知道c 異常是c 語言的乙個特性,使用者可以使用throw的方式來丟擲異常,try catch 來捕獲異常。結構化異常是諸如,zero divided,access violations等異常,這些異...
c 異常處理
一 概述 c 自身有著非常強的糾錯能力,發展到如今,已經建立了比較完善的異常處理機制。c 的異常情況無非兩種,一種是語法錯誤,即程式中出現了錯誤的語句,函式,結構和類,致使編譯程式無法進行。另一種是執行時發生的錯誤,一般與演算法有關。關於語法錯誤,不必多說,寫 時心細一點就可以解決。c 編譯器的報錯...
C 異常處理
程式設計師常常忽視異常處理的重要性,這給他們自己的 造成相當大損害。本文將討論如何在c 中使用異常處理,並介紹在應用 中新增 片段以防止某些錯誤的一些簡單方法,這些錯誤可能導致程式異常終止。結構化異常處理 net框架提供一種標準的錯誤報告機制稱為結構化異常處理。這種機制依賴於應用中報告錯誤的異常。在...