程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> Delphi異常機制與SEH

Delphi異常機制與SEH

編輯:.NET實例教程
Delphi異常機制與SEH
書呆子
介紹SEH機制的文章很多,但基本都是C++的,關於Delphi的很少。最近項目需要,仔細閱讀了VCL關於異常的處理,有些心得體會,希望和大家一起分享。
SEH簡介
       SEH(struct exception handling)結構化異常處理是WIN32系統提供一種與語言無關的的異常處理機制。編程語言通過對SEH的包裝,使程序異常處理更加簡單,代碼結構更加清晰。常見的如,Delphi用到的 try exception end, try finally end,C++用到的_try{} _finally{} 和_try{} _except {} 結構都是對SEH的包裝。
       SEH提供了兩種方式供開發者使用,一種是線程級的,通過設置線程的SEH鏈表結構。線程的TIB信息保存在FS:[0],而TIB的第一項就是指向SEH鏈表,所以,FS:[0]就是指向SEH鏈表,關於SEH結構後面介紹。第二種是進程級的,通過API函數SetUnhandledExceptionFilter設置過濾器函數來獲取異常,注意的是,這種方式只有在前面的異常機制都不予以處理的時候才會被觸發。
       關於更詳細的SEH相關內容,請參見大牛Matt PIEtrek的文章:
A Crash Course on the Depths of Win32 Structured Exception Handling (原文)
A Crash Course on the Depths of Win32 Structured Exception Handling (翻譯)
SEH鏈表的結構如下:
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved