如何防止程序崩溃

//程序崩溃规避函数

//Windows
一、设置编译器"Enable C++ Exceptions"为"/EHa",即"Yes with SEH Exceptions",
使得应用程序能够捕获因自身引发的大部分系统异常,少部分不可回避的系统异常依然
会致使程序崩溃退出;
二、用"try{}catch(...){}"包裹可能会发生崩溃(越界、段错误、除零等操做)的代码段,
在catch中处理异常。编译器

* 高版本VC提供_set_invalid_parameter_handler函数,亦可处理致命异常,由于这个
是全局生效的,因此不推荐使用。it

//Unix
一、越界、段错误、除零等操做一般会触发信号"SIGSEGV",能够使用signal函数设定指定
信号的处理函数,除了"SIGSEGV",还有若干个可被应用程序截获的信号,能够根据自
己的需求去截获这些信号信号并处理;
二、若是想跳回某一处代码(好比崩溃以前设置的"jmp_buf"标志),能够在signal处理函
数中使用longjmp函数跳转至指定的"jmp_buf"标志处。io

* 由于部分信号为标C里定义的,针对部分信号(好比"SIGSEGV")的截获处理亦适用于Windows平台。编译

相关文章
相关标签/搜索