搜尋
首頁後端開發C#.Net教程Microsoft C++ 語言擴充:try-except 語句結構化異常

Microsoft 專用

try-except 語句是一項Microsoft C 語言擴展,它使應用程式能夠在正常終止執行的事件發生時獲取對程序的控制權。此類事件稱為異常,處理異常的機制稱為結構化異常處理。

異常可能基於硬體或軟體。即使應用程式無法從硬體或軟體異常中完全恢復,結構化異常處理也可以顯示錯誤訊息並捕獲應用程式的內部狀態,從而幫助診斷問題。這對於無法輕鬆重現的間歇性問題特別有用。

 語法

try-except-statement
__try  compound-statement

#__except (  expression  )  compound-statement

__try 子句後面的複合語句是受保護節。在 __except 子句後面的複合語句是例外處理程序。如果在控制節執行過程中引發了異常,處理程序將指定要採取的一系列措施。執行程序如下所示:

  1. 執行受保護節。

  2. 如果在受保護節執行過程中未發生異常,則繼續執行 __except 子句之後的語句。

  3. 如果在受保護節的執行過程中或受保護節呼叫的任何例程中發生異常,則會計算 __except 表達式,傳回的值將確定該異常的處理方式。有三個值:
  4. EXCEPTION_CONTINUE_SEARCH 異常無法辨識。繼續往上搜尋堆疊尋找處理程序,首先是所在的 try-except 語句,然後是具有下一個最高優先權的處理程序。
  5. EXCEPTION_CONTINUE_EXECUTION 異常可識別,但已關閉。從出現異常的點繼續執行。

    EXCEPTION_EXECUTE_HANDLER 異常可辨識。透過執行 __except 複合語句來轉移對例外處理程序的控制,然後在例外發生處繼續執行。

由於 __except 表達式將作為 C 表達式來計算,因此它被限制為單一值、條件式運算子或逗號運算子。如果需要更大量的處理,則表達式可呼叫傳回上面列出的三個值之一的例程。

Microsoft C++ 語言擴充:try-except 語句結構化異常 說明

##結構化異常處理適用於 C 和 C 原始檔。但是,這不是專門為 C 設計的。您可透過使用 C 異常處理來確保提高程式碼的可移植性。此外,C 異常處理機制靈活得多,因為它可以處理任何類型的異常。

Microsoft C++ 語言擴充:try-except 語句結構化異常# 說明

#對於 C 程序,應使用 C 異常處理,而不是結構化異常處理。有關詳細信息,請參閱《C 語言參考》中的異常處理。

#

應用程式中的每個例程可以有自己的異常處理程序。 __except 表達式在 __try 體的範圍內執行。這意味著它可以存取在該處聲明的任何局部變數。

__leave 關鍵字在 try-except 語句區塊中有效。 __leave 的效果是跳到 try-except 區塊的最後。執行將在異常處理程序結束後恢復。儘管可使用 goto 語句來達到相同的結果,但 goto 語句會導致堆疊展開。由於 __leave 語句不涉及堆疊展開,因此更有效。

使用 longjmp 執行階段函數退出 try-except 語句被視為異常終止。跳到 __try 語句是非法的,但跳出該語句是合法的。如果有程序在執行 try-except 語句的過程中取消,則不會呼叫例外處理程序。

範例

以下是異常處理程序和終止處理程序的範例。有關終止處理程序的詳細信息,請參閱 try-finally 語句。

.  
.  
.  
puts("hello");  
__try{  
   puts("in try");  
   __try{  
      puts("in try");  
      RAISE_AN_EXCEPTION();  
   }__finally{  
      puts("in finally");  
   }  
}__except( puts("in filter"), EXCEPTION_EXECUTE_HANDLER ){  
   puts("in except");  
}  
puts("world");

這是上面的範例的輸出,右邊也加入了註解:

hello  
in try              /* fall into try                     */  
in try              /* fall into nested try                */  
in filter           /* execute filter; returns 1 so accept  */  
in finally          /* unwind nested finally                */  
in except           /* transfer control to selected handler */  
world               /* flow out of handler                  */

結束Microsoft 專用

相關文章:

C語言PHP的helloworld擴充

c語言 結構體函數:PHP的語言結構與函數的差異

#

以上是Microsoft C++ 語言擴充:try-except 語句結構化異常的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
.NET中的C#代碼:探索編程過程.NET中的C#代碼:探索編程過程Apr 12, 2025 am 12:02 AM

C#在.NET中的編程過程包括以下步驟:1)編寫C#代碼,2)編譯為中間語言(IL),3)由.NET運行時(CLR)執行。 C#在.NET中的優勢在於其現代化語法、強大的類型系統和與.NET框架的緊密集成,適用於從桌面應用到Web服務的各種開發場景。

C#.NET:探索核心概念和編程基礎知識C#.NET:探索核心概念和編程基礎知識Apr 10, 2025 am 09:32 AM

C#是一種現代、面向對象的編程語言,由微軟開發並作為.NET框架的一部分。 1.C#支持面向對象編程(OOP),包括封裝、繼承和多態。 2.C#中的異步編程通過async和await關鍵字實現,提高應用的響應性。 3.使用LINQ可以簡潔地處理數據集合。 4.常見錯誤包括空引用異常和索引超出範圍異常,調試技巧包括使用調試器和異常處理。 5.性能優化包括使用StringBuilder和避免不必要的裝箱和拆箱。

測試C#.NET應用程序:單元,集成和端到端測試測試C#.NET應用程序:單元,集成和端到端測試Apr 09, 2025 am 12:04 AM

C#.NET應用的測試策略包括單元測試、集成測試和端到端測試。 1.單元測試確保代碼的最小單元獨立工作,使用MSTest、NUnit或xUnit框架。 2.集成測試驗證多個單元組合的功能,常用模擬數據和外部服務。 3.端到端測試模擬用戶完整操作流程,通常使用Selenium進行自動化測試。

高級C#.NET教程:ACE您的下一次高級開發人員面試高級C#.NET教程:ACE您的下一次高級開發人員面試Apr 08, 2025 am 12:06 AM

C#高級開發者面試需要掌握異步編程、LINQ、.NET框架內部工作原理等核心知識。 1.異步編程通過async和await簡化操作,提升應用響應性。 2.LINQ以SQL風格操作數據,需注意性能。 3..NET框架的CLR管理內存,垃圾回收需謹慎使用。

C#.NET面試問題和答案:提高您的專業知識C#.NET面試問題和答案:提高您的專業知識Apr 07, 2025 am 12:01 AM

C#.NET面試問題和答案包括基礎知識、核心概念和高級用法。 1)基礎知識:C#是微軟開發的面向對象語言,主要用於.NET框架。 2)核心概念:委託和事件允許動態綁定方法,LINQ提供強大查詢功能。 3)高級用法:異步編程提高響應性,表達式樹用於動態代碼構建。

使用C#.NET建築微服務:建築師實用指南使用C#.NET建築微服務:建築師實用指南Apr 06, 2025 am 12:08 AM

C#.NET是構建微服務的熱門選擇,因為其生態系統強大且支持豐富。 1)使用ASP.NETCore創建RESTfulAPI,處理訂單創建和查詢。 2)利用gRPC實現微服務間的高效通信,定義和實現訂單服務。 3)通過Docker容器化微服務,簡化部署和管理。

C#.NET安全性最佳實踐:防止常見漏洞C#.NET安全性最佳實踐:防止常見漏洞Apr 05, 2025 am 12:01 AM

C#和.NET的安全最佳實踐包括輸入驗證、輸出編碼、異常處理、以及身份驗證和授權。 1)使用正則表達式或內置方法驗證輸入,防止惡意數據進入系統。 2)輸出編碼防止XSS攻擊,使用HttpUtility.HtmlEncode方法。 3)異常處理避免信息洩露,記錄錯誤但不返回詳細信息給用戶。 4)使用ASP.NETIdentity和Claims-based授權保護應用免受未授權訪問。

c語言中:是什麼意思c語言中:是什麼意思Apr 03, 2025 pm 07:24 PM

C 語言中冒號 (':') 的含義:條件語句:分隔條件表達式和語句塊循環語句:分隔初始化、條件和增量表達式宏定義:分隔宏名和宏值單行註釋:表示從冒號到行尾的內容為註釋數組維數:指定數組的維數

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具