BCB程序中对系统异常的筛选

//在主窗体中建一个函数。
//.h文件
public:  // User declarations
    void __fastcall Tfor_Plus::AppLevelExceptionHandle(TObject *Sender,Exception *E);
//.cpp文件
void __fastcall Tfor_Plus::AppLevelExceptionHandle(TObject *Sender,Exception *E)
{
    Screen->Cursor = crDefault;
    AnsiString sProcedureName;// = gsProcedureName;
    AnsiString sText,sCaption;
    sCaption = AnsiString(E->ClassName());
    AnsiString sCaption2;
    AnsiString sCaptionUpperCase = sCaption.UpperCase();
    if(sCaptionUpperCase == "EABORT"){
        sCaption2 = "不显示错误消息框,终止事件序列";
    }
    else if(sCaptionUpperCase == "EDIVBYZERO"){
        sCaption2 = "整数零除错误";
    }
    else if(sCaptionUpperCase == "EACCESSVIOLATION"){
        sCaption2 = "内存访问错误";
    }
    else if(sCaptionUpperCase == "EBITSERROR"){
        sCaption2 = "阻止对布尔型数组无效访问错误";
    }
    else if(sCaptionUpperCase == "ECOMPONENTERROR"){
        sCaption2 = "注册或重命名组件错误";
    }
    else if(sCaptionUpperCase == "ECONVERTERROR"){
        sCaption2 = "对象转换错误";
    }
    else if(sCaptionUpperCase == "EDATABASEERROR"){
        sCaption2 = "数据库访问错误";
    }
    else if(sCaptionUpperCase == "EDBEDITERROR"){
        sCaption2 = "与指定模式不兼容错误";
    }
    else if(sCaptionUpperCase == "EEXTERNALEXCEPTION"){
        sCaption2 = "未识别异常代码";
    }
    else if(sCaptionUpperCase == "EINOUTERROR"){
        sCaption2 = "文件输入输出错误";
    }
    else if(sCaptionUpperCase == "EINTOVERFLOW"){
        sCaption2 = "寄存器溢出";
    }
    else if(sCaptionUpperCase == "EINVALIDCAST"){
        sCaption2 = "非法类型转换错误";
    }
    else if(sCaptionUpperCase == "EINVALIDGRAPHIC"){
        sCaption2 = "访问非法图形文件格式错误";
    }
    else if(sCaptionUpperCase == "EINVALIDOPERATION"){
        sCaption2 = "组件非法操作错误";
    }
    else if(sCaptionUpperCase == "EINVALIDPOINTER"){
        sCaption2 = "非法指针操作";
    }
    else if(sCaptionUpperCase == "EMENUERROR"){
        sCaption2 = "菜单错误";
    }
    else if(sCaptionUpperCase == "EOLECTRLERROR"){
        sCaption2 = "ActiveX控件错误";
    }
    else if(sCaptionUpperCase == "EOLEERROR"){
        sCaption2 = "OLE自动化错误";
    }
    else if(sCaptionUpperCase == "EPRINTERERROR"){
        sCaption2 = "打印错误";
    }
    else if(sCaptionUpperCase == "EPRINTERERROR"){
        sCaption2 = "打印错误";
    }
    else if(sCaptionUpperCase == "EPROPERTYERROR"){
        sCaption2 = "属性值错误";
    }
    else if(sCaptionUpperCase == "ERANGEERROR"){
        sCaption2 = "整型数溢出";
    }
    else if(sCaptionUpperCase == "EREGISTRYEXCEPTION"){
        sCaption2 = "注册表错误";
    }
    else if(sCaptionUpperCase == "ESTACKOVERFLOW"){
        sCaption2 = "堆栈错误";
    }
    else if(sCaptionUpperCase == "EZERODIVIDE"){
        sCaption2 = "浮点零除错误";
    }
    else{
        sCaption2 = "未知错误";
    }
    sText = "ClassName = " + sCaption + "(" + sCaption2 + ")/r/n过程名 = " + sProcedureName + "/r/nMessage = " + E->Message;
    MessageBox(Handle,sText.c_str(),AnsiString(E->ClassName()).c_str(),MB_OK|MB_ICONEXCLAMATION);
}

在每个窗体的OnCreate事件中写入
Application->OnException = for_Plus->AppLevelExceptionHandle;
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值