update : 2015.11.03
php.shukuma.com검색:
|
예외Table of ContentsPHP 5는 다른 프로그래밍 언어와 유사한 예외 모델을 가지고 있습니다. 예외를 throw해서, PHP 안에서 잡을(catch) 수 있습니다. 잠재적인 예외를 잡기 위해서 코드를 try 블록으로 감쌀 수 있습니다. 각 try는 최소한 하나의 catch나 finally 블록을 가져야 합니다. 던지는 객체는 반드시 Exception 클래스나 Exception의 자식 클래스이여야 합니다. 다른 객체를 던질 경우 PHP Fatal 오류를 발생합니다. catch여러 catch 블록이 각각 다른 예외 클래스를 잡을 수 있습니다. 일반적인 실행(try 블록에서 예외를 던지지 않거나, 던져진 예외 클래스에 해당하는 catch가 존재하지 않을 경우)에서는 마지막 catch 블록 정의 이후로 진행합니다. 예외는 catch 블록 안에서 (다시) throw할 수 있습니다. 예외가 던져지면, 따라오는 구문은 실행되지 않고, PHP는 해당하는 첫번째 catch 블록을 찾습니다. 예외가 잡히지 않으면, "Uncaught Exception ..." 메세지로 PHP Fatal Error가 발생합니다. set_exception_handler()로 핸들러를 정의하여 해당 오류를 처리할 수 있습니다. finallyPHP 5.5 이후 부터 catch 블록 이후 또는 대신하여 finally 블록을 지정할 수 있습니다. finally 블록은 예외 발생 유무와 관계 없이 try와 catch 블록 이후에 항상 실행됩니다. 주의
Tip
표준 PHP 라이브러리(SPL)는 여러 가지 내장 예외를 제공합니다. 예제Example #3 예외 던지기
<?php 위 예제의 출력: 0.2 Caught exception: Division by zero. Hello World Example #4 finally 블록과 예외 다루기
<?php 위 예제의 출력: 0.2 First finally. Caught exception: Division by zero. Second finally. Hello World Example #5 중첩 예외
<?php 위 예제의 출력: string(4) "foo!" |