C 中的異常學習

2022-01-21 23:09:09 字數 2684 閱讀 2169

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

using

system.io;

//自己的總結:

//(1)當成員丟擲異常時對效能的影響是指數級

//(2)不要因異常可能對效能造成負面影響而使用錯誤碼

//(3)提高效能可以使用tester-doer模式或try-parse模式

//(4)異常是向上傳遞,層層上拋,我們可以在每個子方面中thow具體異常並附加更多資訊,在主方面中捕獲這些異常.

using system.runtime.serialization;namespace

exceptiondemo

//////

tester-doer模式

///條件:"test"操作遠比"do"操作快(避免多執行緒)

/// private

static

void

testerdoerdemo()

}//////

try-parse模式

/// private

static

void

trypaserdemo()

else

}private

static

void

trycatchfianlly()

catch

}private

static

int divede(int a,int

b)

catch (dividebyzeroexception ex)//

捕捉具體異常類

catch

(exception ex)

return

c; }

//////

throw demo

///可以使用 throw 語句顯式引發異常。還可以使用 throw 語句再次引發捕獲的異常。較好的編碼做法是,向再次引發的異常新增資訊以在除錯時提供更多資訊。

///下面的**示例使用 try/catch 塊捕獲可能的 filenotfoundexception。

///try 塊後面是 catch 塊,catch 塊捕獲 filenotfoundexception,如果找不到資料檔案,則向控制台寫入訊息。

///下一條語句是 throw 語句,該語句引發新的 filenotfoundexception 並向該異常新增文字資訊。

/// private

static

void

thowexceptiondemo()

catch

(exception ex)

}private

static

void fileoperation(string

filepath)

catch

(filenotfoundexception e)

", e);

throw

newfilenotfoundexception(filepath, e);

}catch

(exception ex)

finally

}//////

finallydemo

///異常發生時,執行將終止,並且控制交給最近的異常處理程式。這通常意味著不執行希望總是呼叫的**行。有些資源清理(如關閉檔案)必須總是執行,即使有異常發生。為實現這一點,可以使用 finally 塊。finally 塊總是執行,不論是否有異常發生。

///下面的**示例使用 try/catch 塊捕獲 argumentoutofrangeexception。main 方法建立兩個陣列並試圖將乙個陣列複製到另乙個陣列。該操作生成 argumentoutofrangeexception,同時錯誤被寫入控制台。finally 塊執行,不論複製操作的結果如何。

/// private

static

void

finallydemo()

;int array2 = ;

try

catch

(argumentoutofrangeexception e)

", e);

}finally

}//////

自定義異常demo

/// private

static

void

mydefineexceptiondemo()}}

//////

自定義異常類

/// public

class

mydefineexception : exception,iserializable

public mydefineexception(string

message)

public mydefineexception(string

message, exception inner)

protected

mydefineexception(serializationinfo info, streamingcontext context)

}}

異常 C 中的異常

本文參照於狄泰軟體學院 c 深度剖析課程 之前我們分析了c語言中異常處理的方式,基本沒有好的解決方案。那麼c 中會如何優化c語言對異常的處理的缺陷呢?c 內建了異常處理的語法元素try catch try語句處理正常 邏輯 catch語句處理異常情況 try語句中的異常由對應的catch語句處理 t...

C 中的異常

一,異常的推演 1.函式與異常 平時我們在函式中出現異常情況時通常通過return終止函式並返回乙個值,然後在函式上層來獲取值並判斷是什麼異常情況。因為函式是棧結構的,所以return的時候是通過棧結構逐步往上的,不能夠跨函式直接丟擲,不方便。所以c 推出了異常機制,通過異常機制我們可以輕鬆的捕獲要...

c 中的異常

乙個簡單的例子 include using namespace std double division int a,int b return a b int main catch const char msg return 0 上面的const char 異常型別也可以是任何型別,比如double,...