C++补充
异常处理
对于如下代码
#include <bits/stdc++.h>
void foo(int m, int n) {
int t = m/n;
}
int main(int argc, char* argv[]) {
foo(1, argc-1);
return 0;
}
运行后会提示 “ 出现未处理的异常 ” ,这是因为foo函数里未处理 n 为0 的情况,异常需要捕获。可以使用 try catch来捕获
#include <bits/stdc++.h>
using namespace std;
void foo(int m, int n)
{
try
{
int t = m / n;
}
catch (...) // ...表示接住任何异常
{
cout << "error" << endl;
}
}
int main(int argc, char *argv[])
{
foo(1, argc - 1);
return 0;
}
构造函数可以抛出异常吗,有什么问题?
构造函数中应该避免抛出异常。
- 构造函数中抛出异常后,对象的析构函数将不会被执行
- 构造函数抛出异常时ÿ