关于捕获异常的问题
代码如下:
#include <iostream>
#include <bitset>
using namespace std;
int main()
{
bitset <100> bs;//定义100位的bitset对象
//将bitset对象的每一位置为1
for(size_t ix=0;ix!=bs.size();++ix)
bs[ix]=1;
try
{
bs.to_ulong();
}catch(runtime_error err)
{
cout < <err.what() < <endl;
}
system( "Pause ");
return 0;
}
用dev c++4.9.9.2编译时catch()一行有错误:
15 G:\C++\C++Primer 第四版\程序\第6章\6.24-not finished.cpp syntax error before `err '
哪位高手帮小弟解答一下!
[解决办法]
另外,捕获异常请尽量用引用:
catch(runtime_error& err)//需要修改引用对象时;
或者:
catch(const runtime_error& err)//不需要修改引用对象时。
否则,会多一次毫无意义的拷贝,而且再次抛出时甚至引起一些让人半天也查不来的小bug。