c 異常處理

2021-10-10 11:35:25 字數 1815 閱讀 6341

以vc++6.0 為例

使用_cxxframehandler時,傳入乙個全域性位址,funcinfo函式資訊表,透入了c++異常的一些訊息

funcinfo       :

magicnumber : 魔數,固定數字

maxstate : 最大棧展開數的下標值

punwindmap : 指向棧展開函式表的指標

dwtrycount : try塊數量

ptryblockmap : try塊的列表,指向tryblockmapentry表的結構

unwindmap

tostate : 棧展開下標值

lpfunaction : 展開執行函式

tryblockmapsentry 

trylow : try塊的最小狀態索引,用於範圍檢查

tryhigh : try塊的最大狀態索引,用於範圍檢查

catchhigh : catch塊的最高狀態索引,用於範圍檢查

dwcatchcount : catch塊的數量

pcatchhandlerarray : catch 塊的描述,指向_msrttidscr

_msrttidscr

nflag : 用於catch塊的匹配檢查

ptype : catch塊要捕捉的型別,指向typedescriptor

dispcatchobjectoffset : 用於定位異常物件在當前ebp中的偏移位置

catchproc : catch塊的首位址

typedscriptor

hash : 型別的hash值

spare :

name : 名字

丟擲異常

throwinfo

nflag : 丟擲異常型別標記

pdestructor : 異常物件的析構函式位址

pforwardcompat : 未知

pcatchtabletypearray : catch塊的型別表

catchtabletypearray

count : catcjtabletyprarray陣列包涵的元素個數

ppcatchtabletype : catch塊的型別資訊

catchtabletype:

flag : 異常物件型別標誌

typeinfo : 指向typedescriptorinfor

thisdisplacement : 基類資訊

sizeoroffset : 類的大小

pcoptfunction : 複製建構函式的指標

pwd感覺沒用

C 異常處理

結構化異常 structured exception vs c 異常 c exception 大家都知道c 異常是c 語言的乙個特性,使用者可以使用throw的方式來丟擲異常,try catch 來捕獲異常。結構化異常是諸如,zero divided,access violations等異常,這些異...

c 異常處理

一 概述 c 自身有著非常強的糾錯能力,發展到如今,已經建立了比較完善的異常處理機制。c 的異常情況無非兩種,一種是語法錯誤,即程式中出現了錯誤的語句,函式,結構和類,致使編譯程式無法進行。另一種是執行時發生的錯誤,一般與演算法有關。關於語法錯誤,不必多說,寫 時心細一點就可以解決。c 編譯器的報錯...

C 異常處理

程式設計師常常忽視異常處理的重要性,這給他們自己的 造成相當大損害。本文將討論如何在c 中使用異常處理,並介紹在應用 中新增 片段以防止某些錯誤的一些簡單方法,這些錯誤可能導致程式異常終止。結構化異常處理 net框架提供一種標準的錯誤報告機制稱為結構化異常處理。這種機制依賴於應用中報告錯誤的異常。在...