据我所知,c ++中的所有异常最终都会扩展exception
.在Java世界中,Exception e
无论Exception的类型如何,catch 都会起作用.这是如何在C++中完成的?
为什么没有捕获此片段异常?
try{
int z = 34/0;
cout << "This line should not appear" << endl;
} catch (exception e) {
cout << "An error has occurred: " << e.what(); // Not executed
}
Run Code Online (Sandbox Code Playgroud)
另外,在C++中,如何找出导致什么异常的动作?
为什么没有捕获此片段异常?
除以的整数0
不是标准的c ++异常.因此,在这种情况下不会抛出任何异常,您得到的是一个简单的未定义行为.
某些特定的编译器可能会将此场景映射到特定的异常,您必须检查编译器文档以查找相同的内容.但是,使用此类功能将是不可移植的,并且您的代码将仅限于您的特定编译器.
在这种情况下你能做的最好的事情就是自己检查错误条件(除数等于零)并明确地抛出异常.
另外,在C++中,如何找出导致什么异常的动作?
的std::exception
类提供的方法std::exception::what()
专门为此.
归档时间: |
|
查看次数: |
3281 次 |
最近记录: |