<stdexcept>
定义了一些标准的异常类。分为两大类:逻辑错误和运行时错误。其中运行时错误是程序员不能控制的。
目录:
logic_error
逻辑错误都继承自logic_error
logic_error | 描述 |
---|---|
domain_error | 域错误 |
invalid_argument | 非法参数 |
length_error | 通常是创建对象是给出的尺寸太大 |
out_of_range | 访问超界 |
future_error | 未知错误 |
runtime_error
运行时错误都继承自runtime_error
runtime_error | 描述 |
---|---|
range_error | 边界错误 |
overflow_error | 上溢 |
underflow_error | 下溢 |
system_error | 系统错误 |
throw
使用throw抛出异常。
void my_stdexcept(int val)
{
if (val < 0){
throw std::invalid_argument("invalid argument");
}
else{
printf("test success.\n");
}
}
try catch
try函数体中,将对可能出现的异常进行捕获。catch中对捕获后的异常进一步处理。
int main(int argc, char* argv[])
{
try{
my_stdexcept(-1);
}
catch (std::exception ex){
printf("exception:%s\n", ex.what());
}
return 0;
}
本文源码:stdexcept
参考文献:zhangyulin54321的专栏,c++中exception和stdexcept,2017年7月16日