StartprogrammingusingObjectPascal:RaiseAnException
예외 일으키기
때로는 논리 오류를 막기 위해 예외를 만들고 일으킬 필요가 있습니다. 예를 들어 사용자가 월 수를 13으로 입력 했다면, 월 수의 범위를 벗어났다는 것을 알리는 예외를 일으킬 수 있습니다.
예제:
Program RaiseExcept;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes, SysUtils
{ you can add units after this };
var
x: Integer;
begin
Write('Please input a number from 1 to 10: ');
Readln(x);
try
if ( x < 1 ) or ( x > 10 ) then // raise exception
raise exception.Create(‘x is out of range’);
Writeln(‘ X * 10 = ‘, x * 10);
except
on e: exception do // catch my exception begin
Writeln('Error: ' + e.Message);
end;
end;
Write('Press enter to close');
Readln;
end.
사용자가 1부터 10까지의 범위 밖의 값을 입력하면, 예외(X is out of range)가 만들어질 것이고 이 부분에서 예외 처리가 없다면, 프로그램은 문제에 충돌할 것입니다. 왜냐 하면 try except 사이에 raise 키워드를 포함한 코드를 작성했고, 프로그램은 충돌하지 않겠지만, 대신 오류 메시지를 표시할 것이기 때문입니다.