我正在使用Free Pascal Mkdir单元中的System。
如果已存在与传递给此过程的名称相同的目录,则会发生错误。将$IOCHECKS编译器指令设置为{$ I-},程序继续,但IOResult设置为错误代码5.如果没有{$ I-}编译器指令,则抛出异常。如果没有被捕获,程序退出时返回代码为5,反映错误。
我想抓住这个SPECIFIC异常,无论它名称如何。但是,我不知道如何找到引发的异常的确切名称。
注意:我已经接受了给出的答案,但有一条我不同意的陈述:
异常转换的运行时错误是sysutils的一项功能。
在我的测试中,只需添加一个try / except / end部分就会停止标准运行时错误程序中止(带有消息到stdout)。而程序流程转到“except..end”块并在此之后继续。但是,如果不使用SysUtils单元,则无法确定引发了哪个异常,因为在那里定义了异常类。
答案 0 :(得分:2)
系统单元有一个基本的"终止与错误代码"例如runerror,这就是你所看到的。这不是一个例外。看起来像这样:
[D:\testing]blaat
Runtime error 5 at $00401437
$00401437
$00406E91
除了使用ioresult方法阻止它之外,这是不可恢复的
异常转换的运行时错误是sysutils的一项功能。如果您已经使用了sysutils,它会引发EInOutError并且看起来像这样:
[D:\testing]blaat
An unhandled exception occurred at $00401557:
EInOutError: Access denied
$00401557