国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++編程異常處理中try和throw以及catch語句的用法

2020-01-26 14:44:24
字體:
來源:轉載
供稿:網友

若要在 C++ 中實現異常處理,你可以使用 try、throw 和 catch 表達式。
首先,使用 try 塊將可能引發異常的一個或多個語句封閉起來。
throw 表達式發出信號,異常條件(通常是錯誤)已在 try 塊中發生。你可以使用任何類型的對象作為 throw 表達式的操作數。該對象一般用于傳達有關錯誤的信息。大多數情況下,建議你使用 std::exception 類或標準庫中定義的派生類之一。如果其中的類不合適,建議你從 std::exception 派生自己的異常類。
若要處理可能引發的異常,請在 try 塊之后立即實現一個或多個 catch 塊。每個 catch 塊指定它能處理的異常類型。
以下示例將顯示 try 塊及其處理程序。假設 GetNetworkResource() 通過網絡連接獲取數據,并且兩個異常類型是從 std::exception 派生的用戶定義的類。請注意,異常由 catch 語句中的 const 引用捕獲。我們建議你通過值引發異常并通過常數引用將其捕獲。

MyData md;try { // Code that could throw an exception md = GetNetworkResource();}catch (const networkIOException& e) { // Code that executes when an exception of type // networkIOException is thrown in the try block // ... // Log error message in the exception object cerr << e.what();}catch (const myDataFormatException& e) { // Code that handles another exception type // ... cerr << e.what();}// The following syntax shows a throw expressionMyData GetNetworkResource(){ // ... if (IOSuccess == false)  throw networkIOException("Unable to connect"); // ... if (readError)  throw myDataFormatException("Format error");  // ...}

備注
try 子句后的代碼是代碼的受保護部分。 throw 表達式將引發(即引起)異常。 catch 子句后的代碼塊是異常處理程序。如果 throw 和 catch 表達式中的類型兼容,該處理程序將捕獲引發的異常。有關管理 catch 塊中類型匹配的規則的列表,請參閱Catch 塊的計算方式 (C++)。如果 catch 語句指定省略號 (...) 而非類型,catch 塊將處理每種類型的異常。當你使用 /EHa 選項編譯時,異常可包括 C 結構化異常和系統生成或應用程序生成的異步異常,例如內存保護、被零除和浮點沖突。由于 catch 塊按編程順序處理以查找匹配類型,所以盡量不要使用省略號處理程序來處理關聯的 try 塊。請謹慎使用 catch(...);除非 catch 塊知道如何處理捕獲的特定異常,否則禁止程序繼續執行。 catch(...) 塊一般用于在程序停止執行前記錄錯誤和執行特殊的清理工作。
沒有操作數的 throw 表達式將重新引發當前正在處理的異常。我們建議在重新引發異常時采用該形式,是因為這將保留原始異常的多態類型信息。此類表達式只應在 catch 處理程序中或從 catch 處理程序調用的函數中使用。重新引發的異常對象是原始異常對象,而不是副本。

try { throw CSomeOtherException();}catch(...) { // Catch all exceptions 

主站蜘蛛池模板:
南和县|
繁峙县|
嘉兴市|
宜兰市|
黄骅市|
辽源市|
天津市|
台州市|
安徽省|
新民市|
都江堰市|
阳西县|
贵溪市|
阿拉善左旗|
咸阳市|
保定市|
迁安市|
大姚县|
洪湖市|
五指山市|
民县|
泰兴市|
南和县|
荥阳市|
南郑县|
鹤庆县|
涞水县|
饶阳县|
石首市|
定陶县|
军事|
安新县|
大埔区|
天气|
兴城市|
上杭县|
双辽市|
浦江县|
同仁县|
赤城县|
黄浦区|