저는 PHP 온라인 매뉴얼에서 오늘 예외를 읽었으며 finally 키워드의 목적이나 실제 필요성을 아직 이해하지 못했습니다. 나는 약간의 포스트를 여기에서 읽었다. 그래서 나의 질문은 약간 다르다.keywod 'finally'는 PHP에서 사용하기위한 것입니다
function hi(){
return 'Hi';
}
try {
throw new LogicException("Throw logic \n");
} catch (InvalidArgumentException $e) {
echo $e->getMessage();
}
echo hi();
출력 :
나는 우리가 이런 식으로 마지막으로 사용할 수있는 이해
Fatal error: Uncaught LogicException: Throw Logic in C:\Users\...a.php:167
Stack trace:
#0 {main}
thrown in C:\Users\...a.php on line 167
그래서,이 경우 함수 하이(); 좋은 이유가있다. 예외가 처리되지 않으면 이해합니다 PHP 인터프리터가 스크립트를 중단합니다. 좋은. 지금까지 읽은 것과는 거리가 멀지 만 마침내 hi() 함수를 실행할 수 있습니다. 예외가 처리되지 않더라도 (이유는 모르지만)
그래서이 점을 이해합니다.
try {
throw new LogicException("Throw logic \n");
} catch (InvalidArgumentException $e) {
echo $e->getMessage();
}finally{
echo hi();
}
출력 :
예외 오류뿐만 아니라 함수의 '안녕하세요'메시지, 심지어 내가이에 대한 사용법을 모르는한다에Hi
Fatal error: Uncaught LogicException: Throw Logic in C:\Users\...a.php:167
Stack trace:
#0 {main}
thrown in C:\Users\...a.php on line 167
이. 그러나 이것이 우리가 LogicException
을 잡아 (LogicException $e)
으로 잡아도 예외가 발생하지 않았더라도 실행중인 함수를 볼 수 있으며 'hi'메시지가 표시됩니다.
try {
throw new LogicException("Throw logic \n");
} catch (LogicException $e) {
echo $e->getMessage();
}finally{
echo hi();
}
출력 우리가 더 catch되지 않은 예외가없는 경우에도 그래서, 우리는 여전히 기능 hi()
실행 참조
// Throw logic
// Hi
이 예에서와 같이. 왜이 용도로 사용합니까? 예외가 잡히지 않은 경우 finally 블록을 최후의 수단으로 사용하는 것이 좋을 것이라고 생각했지만, 그렇지 않은 경우에도 사용하지 않는 이유는 무엇입니까?
PHP 버전을 사용하고 있습니까? 진정한'finally '기능은 PHP 5.5까지 추가되지 않았습니다. –
@AlecGordon php 7.0.1 –
오, 이상 하네. [이 분석] (https://adayinthelifeof.nl/2013/02/12/php5-5-trycatchfinally/)에 따르면 finally 블록은 캐치되지 않은 예외 앞에 인쇄해야합니다. –