本人结构化异常处理基础为0,以下代码谁能帮我解释下为什么有了try还会报非法访问内存错误?那try有什么用?
C++异常处理:
try{
*(PBYTE)NULL=3;
}
catch(exception){
MessageBoxW(NULL, NULL, NULL, NULL);
}
Windows结构化异常处理
__try{
*(PBYTE)NULL=3;
}
__finally{
MessageBoxW(NULL, NULL, NULL, NULL);
}

解决方案 »

  1.   

    你这种问题不是异常要解决的东西。
    被捕获的异常一定是在你程序的某个地方抛出来的(也许是你自己写的code,也许是某个库里的),你这个赋值直接就产生了个OS的异常,直接中断了。
      

  2.   

    __try 
    {
       // guarded code
    }
    __except ( expression )
    {
       // exception handler code
    }
      

  3.   

    额。。我看核心编程上面说throw()是C++异常处理函数啊,那windows结构化异常处理难道也要一个一个自己throw()吗?
    当然楼上的答案基本上满意了,1天之后如果没有忘记登录就结贴。
      

  4.   

    你的这个非法赋值直接产生了一个CPU的中断,OS通过接管这个中断来处理这种异常。
    这个跟throw的那种C++异常完全是两回事。