【发布时间】:2015-12-24 05:36:41
【问题描述】:
我的程序有一个 ESyntaxError 类,我像这样使用它:
raise ESyntaxError.Create(Message)
我的 ESyntaxError 类是这样定义的:
ESyntaxError = class(Exception)
我观察到,如果调用了 ESyntaxError.Create(Message) 代码,我的程序的退出代码将设置为 1。但在这种情况下,我希望将其设置为 65。
我试过这样做:
ExitCode := 65;
raise ESyntaxError.Create(Message);
...但是我的应用程序仍然只是以1 退出,而不是65——我猜是因为内置的Exception 类总是将ExitCode 重置为1? (不确定情况是否如此,并且在the Exception docs 中没有看到任何明确说明的内容,但我从我在此处观察到的行为推断出这一点)。
或者,如果我想最终让程序具有非1/non-0 退出状态,我是否应该以其他方式处理这个问题,而不是基于Exception?
【问题讨论】:
-
对于控制台应用程序它工作正常。对于 GUI 应用程序,最简单的方法是使用
TApplicationProperties组件(附加页面)及其OnException事件来捕获未处理的异常。在里面写if E is ESyntaxError then Halt(65) else raise E;之类的东西。
标签: exception pascal freepascal exit-code