Abort - C++ Builder

C++ Builder 参考手册 ➙ System::Sysutils ➙ Abort


头文件:#include
命名空间:System::Sysutils
函数原型:

void __fastcall Abort(void);

参数:

无。

返回值:

无。


  • Abort 函数抛出一个 “安静的” 异常 EAbort,即在某些事件里面,抛出一个这样的异常会结束这个事件,但是不会提示错误信息,如果抛出其他异常就会提示错误信息;
  • 无论如何,Abort 是抛出了异常,也就是说,如果写在了 try ... catch 里面,是可以捕获到异常的,即 EAbort,和其他异常并没什么区别;
  • 里面有一个相似的函数 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

C++ Builder 参考手册 ➙ System::Sysutils ➙ Abort

你可能感兴趣的:(Abort - C++ Builder)