马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Windows C++步伐非常的范例
在Windows C++非常的场景中,我们须要明白以下两种范例的非常:
- C++语言抛出的非常。
- 这是利用C++ throw抛出的exception,利用C++ try-catch即可捕捉。
- 即便是来自于另一个DLL的C++ exception,仍然能利用C++ try-catch捕捉。
- 访问利用体系受掩护内存导致的非常。
- 利用Windows API函数SetUnhandledExceptionFilter()可捕捉。
- 利用C++ try-catch无法捕捉。
试验与分析
C++语言抛出的非常
即用C++ throw关键字抛出的C++ exception,则利用C++ try-catch即能捕捉。已用如下样例代码证明:
- // This is the main program, which links to DLL1
- // main.cpp
- #include <iostream>
- int main()
- {
- try
- {
- ThrowCppException();
- }
- catch (std::exception& e)
- {
- std::cout << e.what() << "\n";
- }
- std::cout << "Program finished normally\n";
- return 0;
- }
复制代码- // DLL1, this is a Dynamic Link Library(DLL)
- // DLLTest.h
- #pragma once
- #if defined(DLL1_EXPORTS)
- #define DLL1_SYMBOL_EXPORT __declspec(dllexport)
- #else
- #define DLL1_SYMBOL_EXPORT __declspec(dllimport)
- #endif
- DLL1_SYMBOL_EXPORT void ThrowCppException();
复制代码- // DLL1, this is a Dynamic Link Library(DLL)
- // DLLTest.cpp
- #include "DLLTest.h"
- #include <exception>
- void ThrowCppExc
复制代码 |