sid*_*ker -4 pascal freepascal exception exit-code
我的程序有一个ESyntaxError类,我这样使用:
raise ESyntaxError.Create(Message)\nRun Code Online (Sandbox Code Playgroud)\n\n我将该ESyntaxError类定义如下:
ESyntaxError = class(Exception)\nRun Code Online (Sandbox Code Playgroud)\n\n我观察到,如果ESyntaxError.Create(Message)调用了该代码,我的程序\xe2\x80\x99s 退出代码将设置为1. 但在这种情况下我希望将其设置为65.
我尝试这样做:
\n\nExitCode := 65;\nraise ESyntaxError.Create(Message);\nRun Code Online (Sandbox Code Playgroud)\n\n...但是我的应用程序仍然只是以 退出1,而不是65\xe2\x80\x94 我猜是因为内置Exception类总是重置ExitCode为1?(Don\xe2\x80\x99t 确实知道 \xe2\x80\x99 是这种情况,并且在异常文档中没有看到任何明确说明这一点,但我从我在这里观察到的行为推断出这一点)。
或者,如果我想让程序具有非1/非0退出状态,我是否应该以其他方式处理这个问题而不是基于它Exception?
这是可行的:您可以将主例程包装在 try- except 块中,然后为特定类型的异常分配 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.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
631 次 |
| 最近记录: |