ExampleTen.cpp
上传用户:skywee
上传日期:2021-12-09
资源大小:141k
文件大小:1k
源码类别:

文件格式

开发平台:

C/C++

  1. #include <stdio.h>
  2. #include <excpt.h>
  3. #include <windows.h>
  4. int Filter(DWORD dwError,_EXCEPTION_POINTERS *pep)
  5. {
  6. //用第一个参数获取ExceptionCode
  7. if(dwError==EXCEPTION_ACCESS_VIOLATION)
  8. printf("Exception_Access_Violationn");
  9. else
  10. printf("Unknown Error:%dn",dwError);
  11. //用第二个参数获取ExceptionCode
  12. printf("Code=%08X, Address=%08Xn",
  13. pep->ExceptionRecord->ExceptionCode,
  14. pep->ExceptionRecord->ExceptionAddress);
  15. return EXCEPTION_CONTINUE_SEARCH;
  16. }
  17. int Func()
  18. {
  19. int *pi=NULL;
  20. __try{
  21. *pi=10;
  22. //注意,GetExceptionCode()只能在__except()中调用。
  23. }__except(Filter(GetExceptionCode(),GetExceptionInformation())){
  24. //!!!此句将不会执行
  25. printf("__except statementn");
  26. }
  27. printf("after __except statementn");
  28. return 0;
  29. }
  30. int main(int argc, char* argv[])
  31. {
  32. __try{
  33. int i=Func();
  34. }__except(EXCEPTION_EXECUTE_HANDLER){
  35. printf("catch exception in main()n");
  36. }
  37. return 0;
  38. }