2012-01-10 2 views
0

이렇게하면 작동합니다. 내가 뭔가 잘못하고 있다고 말해줘. 나는 그것이 잘 작동 루프 내부에 던져 이동,하지만 내 목적을 패배하면,PHP 예외 - throw/catch가 루프에서 작동하지 않습니다.

<?php 
try { 
    echo "start"; 
    throw new Exception("test"); 
    for ($index=0; $index < 1; $index++) { 
    echo "loop"; 
    } 
} catch (Exception $e){ 
    echo "caught $e"; 
} 
?> 

내가 캐치되지 않는 예외를 받고 있어요 :

여기에 코드입니다. 별도의 try/catch 블록을 해킹 할 수는 있지만 hackish가 있습니다.

5.2.13 및 5.2.17 서버에서 사용해 보았습니다. 현재 생산량은 5.2.17이며 5.3.8에서 테스트하지 않은 것은 업그레이드 할 호스트와 함께해야하고 많은 코드를 다시 테스트해야하기 때문입니다.

좋아해요?

P. 예외와 캐치되지 않은 예외의 차이점을 알고 있습니다. 하지만 결과는 다음과 같습니다.

start 
Fatal error: Uncaught exception 'Exception' with message 'test' in C:\UniServer\www\admin\water_ws\test.php:4 Stack trace: #0 {main} thrown in C:\UniServer\www\admin\water_ws\test.php on line 4 
+6

[viper7 (5.2.15RC3-dev)] (http://codepad.viper-7.com/KALRDl) 및 [codepad (5.2.5)] (http://codepad.org)에서 잘 포착 할 것으로 보입니다./WPkjTxnn) ... 여기 뭔가 놀지 않아도 될까요? 잡히지 않은 경우와 비슷한 결과를 보여주는'echo $ e' (Exception을 문자열로 변환) 사실은 도움이되지 않을 수도 있습니다. – cmbuckley

+0

작동하지 않는 방법에 대해 자세히 설명해 주시겠습니까? "루프 테스트"가 아닌 "루프"를 인쇄하고 있습니까? – atxdba

+0

OP는 둘 다 제안하지 않음 (포착되지 않은 예외); 하지만 나는'catch $ e'가'Fatal error : Uncaught $ e'와 많이 닮았다고 생각합니다. – cmbuckley

답변

0

, 그것은 멀리 내 catch 블록을 최적화 eAccelerator의 "최적화"이었다. eAccelerator를 비활성화하면 예상대로 작동합니다.

-1

$e 개체를 반향합니까? 이 시도 : landons 제안

try { 
    throw new Exception("test"); 
    for ($index=0; $index < 1; $index++) { 
     echo "loop"; 
    } 
} catch (Exception $e){ 
    echo $e->getMessage(); 
} 
+0

'echo $ e;'는 예외 클래스의'__toString()'메소드를 호출합니다.이 메소드는 던져진 예외에 대한 좋은 요약을 리턴합니다. –