Rozważmy te dwa przykładyCo to jest słowo kluczowe "finally" w 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
?>
i
<?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
?>
Jaka jest różnica? Czy istnieje sytuacja, w której pierwszy przykład nie wykonałby some_code()
, ale drugi byłby? Czy całkowicie pomijam ten punkt?
'Kod wewnątrz bloku finally zawsze będzie wykonywany po spróbować połowu bloków, niezależnie od tego, czy wyjątek został rzucony, a przed normalne wykonanie resumes.' –
myślę, że to jest związane w tym wątku: http://stackoverflow.com/questions/15031515/can-i-use-try-catch-finally-like-this – JunM
Po prostu, aby uratować kogokolwiek innego kopiowanie-wklejanie z podręcznika PHP, przeczytałem, ale nie Rozumiem różnicę między tymi dwoma przykładami, inaczej nie zadałbym tego pytania. – marxjohnson