2
try {
// code here
}
catch (int param) { cout << "int exception"; }
catch (char param) { cout << "char exception"; }
catch (...) { cout << "default exception"; }
Throw 什么都可以,不定义是 std::exception 及其派生类.
using namespace std;
void f(int i) throw(int)
{
if(i==1)
throw 3;
if(i==2)
throw runtime_error("hehe");
}
int main()
{
for(int i=0;i<10;i++)
{
try
{
if(i==1)
throw exception();
if(i==3)
throw runtime_error("RUN ERROR!");
if(i==8)
throw logic_error("LOGIC ERROR!");
}
catch(runtime_error err)
{
cout << err.what() << endl;
}
catch(logic_error err)
{
cout << err.what() << endl;
break;
}
catch(exception err)
{
cout << err.what() << endl;
}
cout << i << endl;
}
try
{
f(1);
}
catch(int e)
{
cout << e << endl;
}
try
{
f(2);
}
catch(exception err)
{
cout << err.what() << endl;
}
return 0;
}
注意 f 抛出的 runtime_error 异常会被捕获
0 comments:
Post a Comment