Linux下C 异常处理技巧-实例讲解(2)
2008-02-23 05:41:41来源:互联网 阅读 ()
abort();
// else if this is a thread used to service requests
// pthread_exit();
}
};
public:
ExceptionHandler()
{
static SingleTonHandler s_objHandler;
}
};
//
class A
{
public:
A()
{
//int i = 0, j = 1/i;
*(int *)0 = 0;
}
};
// Before defining any global variable, we define a dummy instance
// of ExceptionHandler object to make sure that
// ExceptionHandler::SingleTonHandler::SingleTonHandler() is invoked
ExceptionHandler g_objExceptionHandler;
A g_a;
//
int main(int argc, char* argv[])
{
return 0;
}
处理多线程程式中的异常
有时一些异常没有被捕获,这将造成进程异常中止。但是很多时候,进程包含多个线程,其中少数线程执行核心应用程式逻辑,同时,其余线程为外部请求提供服务。假如服务线程因编程错误而没有处理某个异常,则会造成整个应用程式崩溃。这一点可能是不受人们欢迎的,因为他会通过向应用程式传送不合法的请求而助长拒绝服务攻击。为了避免这一点,未捕获处理程式能够决定是请求异常中止调用,还是请求线程退出调用。清单 3 中 ExceptionHandler::SingleTonHandler::Handler() 函数的末尾处展示了该处理程式。
结束语
我简单地讨论了少许 C 编程设计模式,以便更好地执行以下任务:
在抛出异常的时候追踪异常的来源。
将信号从内核程式转换成 C 异常。
捕获构造和/或析构全局变量期间抛出的异常。
多线程进程中的异常处理。
我希望您能采用这些技巧中的一些来研发无忧代码。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有