Computer >> 컴퓨터 >  >> 프로그램 작성 >> PHP

PHP 중첩 예외

<시간/>

소개

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

두 변수가 모두 숫자이면 나눗셈이 인쇄됩니다.