C++的try catch到底能防止什么错误?

我在.h文件里定义:
    LoadingWidget* w;
然后.cpp文件里定义:

void MyClass::ModifyTask()
{
    // w = new LoadingWidget(); // 忘了生成实例
    try {
        w->show();    
    } catch (int e) {
        QMessageBox::warning(this, ("error"), ("Please input server address!"));
    }
}
尽管写上了try catch,程序照样崩溃。够差劲的。是我哪里没明白吗?我在另一个语言里这样写就不会出问题,程序不会崩溃。

------------------------------------------------------------------------------------

是VC吧? 我以前看到它对try catch 默认不支持了,需要修改设置的
http://blog.csdn.net/yu444/article/details/5612714

------------------------------------------------------------------------------------

C++ 异常 是用来捕捉你在代码内中用throw抛出的异常的。像非法地址、除数为零等等,都不属于C++异常!!

不同的语言,你不能这么去类比。你不能要求一个C++编译器去支持C++标准没有要求的东西。尽管长期以来MSVC对C++标准的支持非常差劲,但这部分应该没什么问题。更何况,它还通过自己的扩展提供了结构化异常的支持。

参考:http://www.qtcn.org/bbs/read-htm-tid-57906.html

posted @ 2015-06-26 19:44  findumars  Views(2782)  Comments(0Edit  收藏  举报