Linux下C程序的异常处理技巧

Linux下C程序的异常处理技巧

ID:44209438

大小:50.50 KB

页数:5页

时间:2019-10-19

Linux下C程序的异常处理技巧_第1页
Linux下C程序的异常处理技巧_第2页
Linux下C程序的异常处理技巧_第3页
Linux下C程序的异常处理技巧_第4页
Linux下C程序的异常处理技巧_第5页
资源描述:

《Linux下C程序的异常处理技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Linux下C++程序的异常处理技巧2005-03-1108:34作者:Agrawal出处:blog责任编辑:方舟相关专题:Linux设备驱动程序开发入门处理C++中的界常会在语言级别上遇到少许隐含限制,但在某些情况下,您可以绕过它们。学习各种利用异常的方法,您就可以生产更可靠的应用程序。保留异常来源信息在C++屮,无论何时在处理程序内捕获一个界常,关于该片常來源的信息都是不为人知的。异常的具体來源可以提供许多更好地处理该异常的重要信息,或者提供一些可以附加到错谋口志的信息,以便以后进行分析。为了解决这一问题,可以

2、在抛出并常语句期间,在并常对象的构造函数中生成一个堆栈跟踪。ExceptionTracer是示范这种行为的"个类。淸单1.在异常対象构造函数中牛成一个堆栈跟踪//SampleProgram://Compiler:gcc3.2.320030502//Linux:RedHat#include#include#include#includeusingnamespacestd;classExceptionTracer{public:Exc

3、eptionTracer(){void*array[25];intnSize=backtrace(array,25);char**symbols=backtrace_symbols(array,nSize);for(inti=0;i

4、于未破坏状态。另一方面,如果这些信号被转换成C++异常,那么您可以优雅地调用其构造两数,并安排多层catch块,以便更好地处理这些信号。清单2中定义的SignalExceptionClass,提供了表示内核可能发出信号的C++异帘的抽象。SignalTranslator是一个基于SignalExceptionClass的模板类,它通常用來实现到C++界常的转换。在任何瞬间,只能冇一个信号处理程序处理一个活动进程的一个信号。因此,SignalTranslator采用了singleton设计模式。整体概念通过用于SIG

5、SEGV的SegmentationFault类和用于SIGFPE的FloatingPointException类得到了展示。淸单2.将信号转换成界常templateclassSignalTranslator{private:classSingleTonTranslator{public:SingleTonTranslator(){signal(SignalExceptionClass::GetSignalNumber(),SignalHandler);}stat

6、icvoidSignalHandler(int){throwSignalExceptionClass();}};public:SignalTranslator()staticSingleTonTranslators_objTranslator;}};//AnexampleforSIGSEGVclassSegmentationFault:publicExceptionTracer,publicexception{public:staticintGetSignalNumber(){returnSIGSEGV;}};Si

7、gnalTranslatorvSegmentationFault>g_objSegmentationFaultTranslator;//AnexampleforSIGFPEclassFloatingPointException:publicExceptionTracer,publicexception{public:staticintGetSignalNumber(){returnSIGFPE;}};SignalTranslatorvFIoatingPointException>g_objFloatingPoint

8、ExceptionTranslator;管理构造函数和析构函数中的异常在全局(询态全局)变量的构造和析构期间,每个ANSIC++都捕获到杲常是不可能的。因此,ANSIC++不建议在那些其实例可能被定义为全局实例(i挣态全局实例)的类的构造函数和析构函数中抛出异常。换一种说法就足永远都不要为那些其构造函数和析构函数可能抛出并常的类定义全局(静态金局)实例。不过

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。