C 異常處理

2021-10-02 02:56:20 字數 4022 閱讀 5968

catchfinallythrow

try:try 塊標識**塊的哪些特定的異常將被啟用。它的後面是乙個或多個 catch 塊。

catch:乙個用於捕獲異常的程式段,將 catch 放在你希望能處理這個異常的地方。「catch」這個關鍵字標誌著異常的捕獲。

finally:finally 保證了無論是否有異常丟擲,此**段中的程式都會被執行。例如,如果你開啟了乙個檔案,那麼不管是否發生了異常,檔案都需要關閉。

throw:當出現問題時,程式會丟擲異常。這項工作是通過使用 throw 來實現的。

語法假設乙個**塊產生了乙個異常,通過使用trycatch的組合可以捕獲這個異常。乙個 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框架提供一種標準的錯誤報告機制稱為結構化異常處理。這種機制依賴於應用中報告錯誤的異常。在...