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

时间:2015-11-23 07:47:47

标签: pascal freepascal delphi

我正试图找到一种方法来检测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 Range Error是否发生。我尝试使用IOResult命令,但它总是显示"未知错误"我的案例陈述的字符串。

1 个答案:

答案 0 :(得分: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;

请查看官方文档中的The try...except statement