StartprogrammingusingObjectPascal:RaiseAnException

From 흡혈양파의 번역工房
Revision as of 10:19, 26 July 2012 by Onionmixer (talk | contribs) (SPOP 예외일으키기 페이지 추가)
(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 키워드를 포함한 코드를 작성했고, 프로그램은 충돌하지 않겠지만, 대신 오류 메시지를 표시할 것이기 때문입니다.