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