>  Q&A  >  본문

PHP의 Try/Catch 블록은 예외 상황을 포착할 수 없습니다.

<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>
P粉226413256P粉226413256447일 전490

모든 응답(1)나는 대답할 것이다

  • P粉611456309

    P粉6114563092023-08-23 14:46:31

    방금 이 정확한 문제에 직면했는데, 예외의 이름을 복사한 것 같은 느낌이 들지만 이를 포착하지 못합니다. 내 입장에서는 어리석은 실수로 판명되었지만, 다른 사람도 같은 상황에 처할 경우를 대비해 여기에 내 상황을 게시해야겠다고 생각했습니다.

    내 네임스페이스에서는 예외가 A이고 스크립트는 한 네임스페이스에서 B이라고 합니다. 문제는 (PHP에서) BAMyException과 동일한 AMyException이 있다는 것입니다(왜냐하면 내 스크립트는 네임스페이스에서 B이라고 불리기 때문입니다!). 내가 해야 할 일은 예외 이름 앞에 백슬래시(또는 무엇이라고 부르든)를 추가하여 다음과 같이 보이도록 수정하는 것뿐이었습니다: AMyException

    회신하다
    0
  • 취소회신하다