소개
try - catch 블록은 원하는 수준까지 중첩될 수 있습니다. 예외는 출현 순서의 역순으로 처리됩니다. 즉, 가장 안쪽에 있는 예외 처리가 먼저 수행됩니다.
예시
다음 예에서 내부 try 블록은 두 변수 중 하나가 숫자가 아닌지 확인하고 숫자가 아닌 경우 사용자 정의 예외를 throw합니다. 외부 시도 블록에서 DivisionByZeroError 발생 분모가 0이면 두 숫자의 나눗셈이 표시됩니다.
예시
<?php class myException extends Exception{ function message(){ return "error : " . $this->getMessage() . " in line no " . $this->getLine(); } } $x=10; $y=0; try{ if (is_numeric($x)==FALSE || is_numeric($y)==FALSE) throw new myException("Non numeric data"); } catch (myException $m){ echo $m->message(); return; } if ($y==0) throw new DivisionByZeroError ("Division by 0"); echo $x/$y; } catch (DivisionByZeroError $e){ echo $e->getMessage() ."in line no " . $e->getLine(); } ?>
출력
다음 출력이 표시됩니다.
Division by 0 in line no 19
변수 중 하나를 숫자가 아닌 값으로 변경
error : Non numeric data in line no 20
두 변수가 모두 숫자이면 나눗셈이 인쇄됩니다.