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

마지막으로 PHP 예외 처리

<시간/>

소개

마침내의 코드 블록은 ry 블록에 예외가 있든 없든 항상 실행됩니다. 이 블록은 catch 블록 뒤 또는 catch 블록 대신에 나타납니다.

캐치 및 최종 차단

다음 예에서는 catch 및 finally 블록이 모두 제공됩니다. try 블록에서 예외가 발생하면 양쪽 모두의 코드가 실행됩니다. 예외가 없으면 finally 블록만 실행됩니다.

예시

<?php
function div($x, $y) {
   if (!$y) {
      throw new Exception('Division by zero.');
   }
   return $x/$y;
}
try {
   echo div(10,0) . "\n";
} catch (Exception $e) {
   echo 'Caught exception: ', $e->getMessage(), "\n";
}
finally{
   echo "This block is always executed\n";
}
// Continue execution
echo "Execution continues\n";
?>

출력

다음 출력이 표시됩니다.

Caught exception: Division by zero.
This block is always executed
Execution continues

예외가 발생하지 않도록 try 블록의 명령문 변경

예시

<?php
function div($x, $y) {
   if (!$y) {
      throw new Exception('Division by zero.');
   }
   return $x/$y;
}
try {
   echo div(10,5) . "\n";
} catch (Exception $e) {
   echo 'Caught exception: ', $e->getMessage(), "\n";
}
finally{
   echo "This block is always executed\n";
}
// Continue execution
echo "Execution continues\n";
?>

출력

다음 출력이 표시됩니다.

2
This block is always executed
Execution continues

최종적으로만 차단

다음 예제에는 두 개의 try 블록이 있습니다. 그 중 하나는 finally 블록만 있습니다. try 블록은 예외를 발생시키는 div 함수를 호출합니다.

예시

<?php
function div($x, $y){
   try{
      if (!$y) {
         throw new Exception('Division by zero.');
      }
      return $x/$y;
   }
   catch (Exception $e) {
      echo 'Caught exception: ', $e->getMessage(), "\n";
   }
}
try {
   echo div(10,0) . "\n";
}
finally{
   echo "This block is always executed\n";
}
// Continue execution
echo "Execution continues\n";
?>

출력

다음 출력이 표시됩니다.

Caught exception: Division by zero.
This block is always executed
Execution continues