1、c++异常简介
- 同一个 try 语句可以跟上多个 catch 语句
— catch 可以定义具体处理的异常类型
— 不同类型的异常由不同的 catch 语句负责处理
— try 语句可以抛出任何类型的异常(可以是int ,字符或者字符串)
— catch(…)用于处理所有类型的异常(通吃)
— 任何异常都只能被捕获(catch)一次 - 异常处理的匹配必须严格匹配,不进行任何的类型转换
#include <iostream>
using namespace std;
double divide(double a, double b)
{
double ret = 0;
const double delta = 0.0000001;
if(b <= -delta || b >= delta)
{
ret = a/b;
}
else
{
throw 0;
}
return ret;
}
void demo1()
{
try
{
throw 'c';
}
catch (int i)
{
cout << "catch (int i)" << endl;
}
catch (float f)
{
cout << "catch (float f)" << endl;
}
catch (char c)
{
cout << "catch (char c)" << endl;
}
}
void demo2()
{
throw "xiebs";
}
int main()
{
try
{
double r = divide(8, 4);
cout << "r = " << r << endl;
}
catch (...)
{
cout << "divide by zero" << endl;
}
demo1();
try
{
demo2();
}
catch (string s)
{
cout << "catch (string s)" << endl;
}
catch (char* c)
{
cout << "catch (char* c)" << endl;
}
catch (const char* s)
{
cout << "catch (const char* s)" << endl;
}
return 0;
}