StartprogrammingusingObjectPascal:RaiseAnException

From 흡혈양파의 번역工房
Revision as of 10:57, 4 April 2013 by Onionmixer (talk | contribs) (번역수정)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

예외 발생 시키기

때로는 논리 오류를 막기 위해 예외를 만들고 발생시킬 필요가 있습니다. 예를 들어 사용자가 월의 숫자를 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 키워드를 포함한 코드를 작성했고, 프로그램은 충돌하지 않겠지만, 대신 오류 메시지를 표시할 것이기 때문입니다.