至个人年久失修的git博客搬运https://yusakul.github.io/
-
验证异常处理调用顺序:VEH --> SEH --> VCH
#include "stdafx.h" #include <windows.h> LONG WINAPI vch(EXCEPTION_POINTERS* pExcept) { printf("vch\n"); return EXCEPTION_CONTINUE_SERCH; } LONG WINAPI veh(EXCEPTION_POINTERS* pExcept) { printf("veh\n"); return EXCEPTION_CONTINUE_SEARCH; } LONG WINAPI seh(EXCEPTION_POINTERS* pExcept) { printf("seh\n"); return EXCEPTION_CONTINUE_SEARCH; } LONG WINAPI ueh(EXCEPTION_POINTERS* pExcept) { printf("ueh\n"); return EXCEPTION_CONTINUE_SEARCH; } int _tmain(int argc, _TCHAR* argv[]) { AddVectoredContinueHandler(TRUE, vch); AddVectoreExceptionHandler(TRUE, veh); //在64位系统系下,当程序被调用时,UEH不会被调用,不被调试才会被调用 //在32位系统下,被调试时也会被调用 SetUnhandledExceptionFilter(ueh); __try{ *(int*)0=0; } __except(seh(GetExceptionInformation())){ } return 0; }