美文网首页
Abort - C++ Builder

Abort - C++ Builder

作者: 玄坴 | 来源:发表于2020-06-26 18:28 被阅读0次

    C++ Builder 参考手册System::SysutilsAbort


    头文件:#include <System.SysUtils.hpp>
    命名空间:System::Sysutils
    函数原型:

    void __fastcall Abort(void);
    

    参数:

    无。

    返回值:

    无。


    • Abort 函数抛出一个 “安静的” 异常 EAbort,即在某些事件里面,抛出一个这样的异常会结束这个事件,但是不会提示错误信息,如果抛出其他异常就会提示错误信息;
    • 无论如何,Abort 是抛出了异常,也就是说,如果写在了 try ... catch 里面,是可以捕获到异常的,即 EAbort,和其他异常并没什么区别;
    • <cstdlib> 里面有一个相似的函数 abort,所有字母全部小写,是标准 C/C++ 函数,在 std 命名空间里面,这个 std::abort 让程序异常结束,并且通知操作系统程序是由于有错误而结束的,会有程序异常结束的提示信息;
    • 为了减少出错概率,方便阅读程序,调用函数可以带命名空间书写,例如 Sysutils::Abort(); 和 std::abort();

    例1:在 Button1 按钮的点击事件里面,测试 “安静的” 异常

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        int n = StrToIntDef(Edit1->Text, 0);
        if(n < 0)
            Sysutils::Abort();
        if(n > 0)
            throw Exception(L"测试抛出异常");
        ShowMessage(L"程序正常执行");
    }
    

    运行结果:

    • 在 Edit1 里面输入 -1,然后点击 Button1,没有任何提示;
    • 在 Edit1 里面输入 0,然后点击 Button1,提示 “程序正常执行”;
    • 在 Edit1 里面输入 1,然后点击 Button1,提示 “测试抛出异常”:
    在 Edit1 里面输入 -1,点击 Button1 没有任何提示 在 Edit1 里面输入 0,点击 Button1 提示 “程序正常执行” 在 Edit1 里面输入 1,点击 Button1 提示 “测试抛出异常”

    例2:在 try ... catch 里面测试 Abort 函数抛出的异常

    这个例子是把前面的 例1 的程序代码放在了 try ... catch 里面,测试 Abort 是否抛出了异常:

    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
        try
        {
            int n = StrToIntDef(Edit1->Text, 0);
            if(n < 0)
                Sysutils::Abort();
            if(n > 0)
                throw Exception(L"测试抛出异常");
            ShowMessage(L"程序正常执行");
        }
        catch(Exception &e)
        {
            ShowMessage(L"捕获到了异常:" + e.ClassName()
                      + L"\r\n异常提示信息:" + e.Message);
        }
    }
    

    运行结果:

    在 Edit1 里面输入 -1,然后点击 Button1 按钮,可以看到程序抛出了异常,而等于 0 和 1 的情况和前面的 例1 相同:

    在 Edit1 里面输入 -1,点击 Button1 按钮可以看到程序抛出了异常 在 Edit1 里面输入 0,点击 Button1 提示 “程序正常执行” 在 Edit1 里面输入 1,点击 Button1 提示 “测试抛出异常”

    相关:

    • std::abort
    • std::exit
    • System::Sysutils::EAbort
    • System::Sysutils::OutOfMemoryError
    • System::Sysutils::RaiseLastOSError
    • System::Sysutils::CheckOSError
    • System::Sysutils::Win32Check
    • System::Sysutils::ShowException
    • Vcl::Forms::TApplication::ShowException
    • System::Sysutils::ExceptionErrorMessage
    • System::Sysutils
    • <cstdlib>

    C++ Builder 参考手册System::SysutilsAbort

    相关文章

      网友评论

          本文标题:Abort - C++ Builder

          本文链接:https://www.haomeiwen.com/subject/uspdahtx.html