소개
마침내의 코드 블록은 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