StartprogrammingusingObjectPascal:TryExceptStatement

From 흡혈양파의 번역工房
Revision as of 10:16, 26 July 2012 by Onionmixer (talk | contribs) (SPOP TryExcept구문 페이지 추가)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

try except 구문

try
    // Start of protected code
    CallProc1;
    CallProc2;
    // End of protected code
except
on e: exception do // Exception handling
begin
    Writeln('Error: ' + e.message);
end;
end;

나누기에 대한 예제입니다.

Program ExceptionHandling;

{$mode objfpc}{$H+}

uses
    {$IFDEF UNIX}{$IFDEF UseCThreads}
    cthreads,
    {$ENDIF}{$ENDIF}
    Classes, SysUtils
    { you can add units after this };
var
    x, y: Integer;
    Res: Double;
begin
    try
        Write('Input x: ');
        Readln(x);
        Write('Input y: ');
        Readln(y);
        Res:= x / y;
        Writeln('x / y = ', Res);

    except
    on e: exception do
    begin
        Writeln('An error occurred: ', e.message);
    end;
    end;
    Write('Press enter key to close');
    Readln;
end.

try 구문에 두개의 섹션이 있습니다. 처음 부분은 try...except 사이에 있는 보호할 필요가 있는 블록이고, 다른 부분은 except .. end 사이에 있습니다.

처음 섹션(try except)에서 무엇인가가 잘못되었다면, 프로그램은 except 섹션 (except..end)으로 갈 것이고 충돌이 일어나지 않겠지만, 적당한 오류 메시지를 표시하고 실행을 계속할 것입니다.

y 값이 0이라면 예외가 발생할 수 있는 줄입니다.

Res:= x / y;

예외가 발생하지 않았다면, except .. end 부분을 실행하지 않을 것입니다.