PHP의 Try/Catch 블록은 예외 상황을 포착할 수 없습니다.
P粉226413256
2023-08-22 15:19:37
<p>다음 페이지에서 예제 #1을 실행하려고 합니다: http://php.net/manual/en/언어.Exceptions.php</p>
<pre class="brush:php;toolbar:false;"><?php
함수 역($x) {
만약 (!$x) {
throw new Exception('0으로 나누기.');
}
1/$x를 반환합니다.
}
노력하다 {
에코 역(5) .
에코 역(0) .
} 잡기(예외 $e) {
echo '예외 발생: ', $e->getMessage(), "n";
}
// 계속 실행
echo "Hello Worldn";
?></pre>
<p>그러나 내가 얻은 결과는 예상과 다릅니다. </p>
<pre class="brush:php;toolbar:false;">0.2
치명적인 오류: '0으로 나누기' 메시지와 함께 포착되지 않은 예외 '예외'.
inxxx:
7 스택 추적: #0 xxx(14): inverse(0) #1 {main}이 7행의 xxx에 던져졌습니다</pre>
<p>제가 사용하는 개발 환경은 <code>UniServer 3.5</code>와 <code>PHP 5.2.3</code></p>
방금 이 정확한 문제에 직면했는데, 예외의 이름을 복사한 것 같은 느낌이 들지만 이를 포착하지 못합니다. 내 입장에서는 어리석은 실수로 판명되었지만, 다른 사람도 같은 상황에 처할 경우를 대비해 여기에 내 상황을 게시해야겠다고 생각했습니다.
내 네임스페이스에서는 예외가 A이고 스크립트는 한 네임스페이스에서 B이라고 합니다. 문제는 (PHP에서) BAMyException과 동일한 AMyException이 있다는 것입니다(왜냐하면 내 스크립트는 네임스페이스에서 B이라고 불리기 때문입니다!). 내가 해야 할 일은 예외 이름 앞에 백슬래시(또는 무엇이라고 부르든)를 추가하여 다음과 같이 보이도록 수정하는 것뿐이었습니다: AMyException