Что такое ключевое слово `finally` для PHP?

Рассмотрим эти два примера

<?php function throw_exception() { // Arbitrary code here throw new Exception('Hello, Joe!'); } function some_code() { // Arbitrary code here } try { throw_exception(); } catch (Exception $e) { echo $e->getMessage(); } some_code(); // More arbitrary code ?> 

а также

 <?php function throw_exception() { // Arbitrary code here throw new Exception('Hello, Joe!'); } function some_code() { // Arbitrary code here } try { throw_exception(); } catch (Exception $e) { echo $e->getMessage(); } finally { some_code(); } // More arbitrary code ?> 

Какая разница? Есть ли ситуация, когда первый пример не будет выполнять some_code() , но второй будет? Я пропустил пункт целиком?

Если вы поймаете исключение (любое исключение), два примера кода эквивалентны. Но если вы обрабатываете только определенный тип исключения в своем блоке класса и возникает другой вид исключения, то some_code(); будет выполняться только в том случае, если у вас есть блок finally .

 try { throw_exception(); } catch (ExceptionTypeA $e) { echo $e->getMessage(); } some_code(); // Will not execute if throw_exception throws an ExceptionTypeB 

но:

 try { throw_exception(); } catch (ExceptionTypeA $e) { echo $e->getMessage(); } finally { some_code(); // Will be execute even if throw_exception throws an ExceptionTypeB } 

http://www.youtube.com/watch?v=EWj60p8esD0

Смотреть с: 12:30 и далее

Посмотри это видео. Однако язык JAVA. Но я думаю, что это иллюстрирует Исключения и использование ключевого слова finally очень хорошо.

блок fianlly используется, когда вы хотите, чтобы часть кода выполнялась независимо от того, произошло ли исключение или нет …

Пример 2 на этой странице:

Руководство PHP