我的程序有一个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
/非1
退出状态的程序,我是否应该以其他方式处理此问题而不是基于{{1 }}?
答案 0 :(得分:4)
这样做:你可以在try-except块中包装main例程,然后为特定类型的异常分配ExitCode
program project1;
uses
SysUtils;
type
EMy = class(Exception);
procedure run;
begin
raise EMy.Create('lel');
end;
begin
try
run;
except
on e: EMy do
begin
ExitCode := 65;
end;
end;
end.