異常是在程式執行期間出現的問題。c# 中的異常是對程式執行時出現的特殊情況的一種響應,比如嘗試除以零。
假設乙個塊將出現異常,乙個方法使用 try 和 catch 關鍵字捕獲異常。try/catch 塊內的**為受保護的**,使用 try/catch 語法如下所示:
try您可以列出多個 catch 語句捕獲不同型別的異常,以防 try 塊在不同的情況下生成多個異常。catch
(exceptionname
e1 )
catch
(exceptionname
e2 )
catch
(exceptionname
en )
finally
system.systemexception類是所有預定義的系統異常的基類。
下表列出了一些派生自 sytem.systemexception 類的預定義的異常類:
異常類描述
system.io.ioexception
處理 i/o 錯誤。
system.indexoutofrangeexception
處理當方法指向超出範圍的陣列索引時生成的錯誤。
system.arraytypemismatchexception
處理當陣列型別不匹配時生成的錯誤。
system.nullreferenceexception
處理當依從乙個空物件時生成的錯誤。
system.dividebyzeroexception
處理當除以零時生成的錯誤。
system.invalidcastexception
處理在型別轉換期間生成的錯誤。
system.outofmemoryexception
處理空閒記憶體不足生成的錯誤。
system.stackoverflowexception
處理棧溢位生成的錯誤。
c# 以 try 和 catch 塊的形式提供了一種結構化的異常處理方案。使用這些塊,把核心程式語句與錯誤處理語句分離開。
這些錯誤處理塊是使用try、catch和finally關鍵字實現的。下面是乙個當除以零時丟擲異常的例項:
using當上面的**被編譯和執行時,它會產生下列結果:system
;namespace
public
void
division
(int
num1
,int
num2
)catch
(dividebyzeroexceptione)
",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
(tempiszeroexceptione)
",e.
message);}
console
.readkey
();}}}
public
class
tempiszeroexception:}
public
class
temperature
else",
temperature);}
}}
tempiszeroexception: zero temperature found如果異常是直接或間接派生自system.exception類,您可以丟擲乙個物件。您可以在 catch 塊中使用 throw 語句來丟擲當前的物件,如下所示:
catch(exceptione)
C 異常處理
結構化異常 structured exception vs c 異常 c exception 大家都知道c 異常是c 語言的乙個特性,使用者可以使用throw的方式來丟擲異常,try catch 來捕獲異常。結構化異常是諸如,zero divided,access violations等異常,這些異...
c 異常處理
一 概述 c 自身有著非常強的糾錯能力,發展到如今,已經建立了比較完善的異常處理機制。c 的異常情況無非兩種,一種是語法錯誤,即程式中出現了錯誤的語句,函式,結構和類,致使編譯程式無法進行。另一種是執行時發生的錯誤,一般與演算法有關。關於語法錯誤,不必多說,寫 時心細一點就可以解決。c 編譯器的報錯...
C 異常處理
程式設計師常常忽視異常處理的重要性,這給他們自己的 造成相當大損害。本文將討論如何在c 中使用異常處理,並介紹在應用 中新增 片段以防止某些錯誤的一些簡單方法,這些錯誤可能導致程式異常終止。結構化異常處理 net框架提供一種標準的錯誤報告機制稱為結構化異常處理。這種機制依賴於應用中報告錯誤的異常。在...