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 키워드를 포함한 코드를 작성했고, 프로그램은 충돌하지 않겠지만, 대신 오류 메시지를 표시할 것이기 때문입니다.