如何在ObjFPC的try-except语句中查找错误编号

3
我正在尝试找到一种在objfpc中检测错误编号的方法,我尝试的代码如下所示:
Program ErrorHandling;
{$R+}
{$MODE objfpc}

Uses
SysUtils, crt;

Var
  intvar: 1 .. 100;

Begin
  Try
   clrscr;
    writeln( 'enter intvar: ');
    readln(intvar);


  Except
    on
    e: Exception
       Do
       Begin
         writeln('In Exception, IOResult: ',IOResult);
         Case IOResult Of
           201: writeln('Range intvar out of range 1-100!'); {How can we find that Error no is 201}
           Else
             writeln('Unkown Error!'); readln;
         End

       End



End;

writeln('intvar: ' , intvar);
readln;
End.

但是我们如何发现201范围错误呢?我尝试使用IOResult命令,但它总是显示我的case语句中的“未知错误”字符串。

1个回答

3
使用异常可以根据异常本身的类型检查错误类型。经典的方法是:
try
    clrscr;
    writeln('enter intvar: ');
    readln(intvar);
except
    on e: ERangeError do // Executes when raised exception is ERangeError
    begin
        Writeln('Range intvar out of range 1-100!');
    end;
    on e: Exception do // Executes for any other exceptions
    begin
        Writeln(e.ClassName); // Shows exception class you can use at the "on e:" constuction
        Writeln(e.Message);
    end;
end;

请查看官方文档中的“try...except语句”(The try...except statement)。点击此处

谢谢Abelisto。我正在查看fpc的官方文档,但是关于ERangeError没有任何内容,虽然其中提供了一些数学异常,您能否将我指向SysUtils.Exceptions中存在的所有异常的列表? - user3051677
1
@user3051677 http://freepascal.org/docs.var -> 运行时库(RTL)单元参考手册 -> sysutils -> Classes,然后查看以 E 开头的类。 - Abelisto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接