cc++错误处理方法
2017-05-17 13:14
120 查看
c语言
ErrorNo ErrorCode
enum {写各种错误};
do while
goto
Setjmp longjmp
现在 用的不多 但是看Linux内核代码的时候还是会很多这种
c++语言
异常体系
std::exception;//所有的异常体系的基类
std::runtime_error;//他也是一个接口
std::overflow_error;
std::range_error;//计算值错误
std::underflow_error;
std::logic_error;//
std::invalid_argument;//不存在参数
std::length_error;//超出异常
std::out_of_range;
std::domain_error;
//上面的异常 一般用...捕获 ...等同 std::exception
std::bad_alloc;//指针分配错误
std::bad_cast;//转换错误
使用方法
try
{
}
catch (MyExpict& str)
{
str.What();
}
catch (...)//所有的
{
//他是一个线程安全的
//栈里面的数据 都会 正常的销毁
//如何是堆上的 不能。 new
}
注意事项
1 异常继承时需要派生类在基类之前
2 不要抛出指针 如果在栈当中 会被回收 如果在堆当中 会内存泄露
3 永远不在 ~析构函数抛出异常 他会终止程序
ErrorNo ErrorCode
enum {写各种错误};
do while
goto
Setjmp longjmp
现在 用的不多 但是看Linux内核代码的时候还是会很多这种
#include <setjmp.h> jmp_buf env; double Div(double d1, double d2) { if (d2 == 0.0) { longjmp(env, 1);//不是一个返回 他是一个 goto //跳到那里去 作为返回值 } return d1 / d2; } int _tmain(int argc, _TCHAR* argv[]) { // Setjmp longjmp 现在 用的不多 但是看Linux内核代码的时候还是会很多这种 int ret = setjmp(env); if (ret == 0) { Div(5.0, 1.0); } else if (ret == 1) { printf("Error"); } }
c++语言
异常体系
std::exception;//所有的异常体系的基类
std::runtime_error;//他也是一个接口
std::overflow_error;
std::range_error;//计算值错误
std::underflow_error;
std::logic_error;//
std::invalid_argument;//不存在参数
std::length_error;//超出异常
std::out_of_range;
std::domain_error;
//上面的异常 一般用...捕获 ...等同 std::exception
std::bad_alloc;//指针分配错误
std::bad_cast;//转换错误
使用方法
try
{
}
catch (MyExpict& str)
{
str.What();
}
catch (...)//所有的
{
//他是一个线程安全的
//栈里面的数据 都会 正常的销毁
//如何是堆上的 不能。 new
}
注意事项
1 异常继承时需要派生类在基类之前
2 不要抛出指针 如果在栈当中 会被回收 如果在堆当中 会内存泄露
3 永远不在 ~析构函数抛出异常 他会终止程序
相关文章推荐
- IOCP中的socket错误和资源释放处理方法
- 创建存储过程时候,错误 7405: 异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项的处理方法
- vs2003无法打开或创建Web应用程序解决办法(HTTP/1.1 500server error错误处理方法)
- ora-02069 错误处理方法
- [导入]在含有Request.QueryString页面中处理未能获得参数的错误处理方法
- asp 常见错误 不能打开注册表关键字 的处理方法
- NTLDR is missing 错误处理方法
- EPSON 830U 打印错误的处理方法
- SEHException的错误处理方法
- 代码阅读总结之Fitch and Mather 7.0(asp.net发生异常或错误时错误提示页面的处理方法)
- 对亏损的错误态度和处理方法
- 错误:在一个线程上创建的控件不能成为在另一个线程控件的父级(处理方法)
- ORA-01779错误的处理方法(转贴:http://tech.inspiremedia.org/archives/82.html,原作者:charlee)
- 三种错误处理的方法——从返回值到异常处理
- Message: 因为当前线程不在单线程单元中,故无法实例化 ActiveX 控件 错误处理方法
- vs.net 2005 smartphone/Pocket PC 调试错误的处理方法。
- C&C08交换机错误话单的原理和处理方法
- 错误类型:Provider (0x80004005)未指定的错误 的一个处理方法
- 常见explorer错误的处理方法
- C # 项目 Visual Studio 2005 IDE 中时错误信息: " 绑定: 句柄无效 " 处理方法