2014-09-17 2 views
-2

PHP 예외를 처음 사용합니다. 내가 같은 코드를 시도했을 때PHP 예외를 올바르게 제기 할 수 없음

<?php 

if ($number != 0) { 
    throw new Exception('number not equal to 0'); 
} 
return true; 

try { 
$number = 0; 
} catch (Exception $e) { 
echo 'Caught exception: ', $e->getMessage(), "\n"; 

} 

나는 빈 화면이 나오고 예외는 발생하지 않는다.

+1

을 ??? – esqew

+0

내가 필요한 것은 예외를 발생시키는 것입니다. 빈 화면이 생깁니다. $ number! = 0 일 때 예외를 throw해야합니다. – lovemysql

+0

예제를 보려면 http://php.net/manual/en/language를 참조하십시오. .exceptions.php –

답변

2

(널리 사용되는) 프로그래밍 언어와 마찬가지로 PHP는 코드를 위에서 아래로 읽습니다 (예외가 있지만이 질문의 목적 상이를 설명하는 것은 쓸모가 없습니다).

따라서 스크립트가 시작될 때 $number0을 비교합니다. 아직 설정하지 않았으므로 0과 동일하게 평가되며 예외가 발생하지 않습니다. 그런 다음 return true;when called in the global scope, ends the execution of the current script을 실행하고 더 이상 코드를 전달하지 않습니다. 스크립트가 다음 블록에 계속 있었다면

는 심지어 return 문없이, 당신의 문은 말 그대로 실패해서는 안 0-$number을 설정 try에 의미하기 때문에 제기 예외가 없을 것입니다.

당신은 function 블록에 코드를 캡슐화, 또는 1 @donald123 자신의 예에 준합니다 (try 블록 내에서 예외를 던지는)과 유사한 솔루션을 사용하는 등 여러 가지 옵션을 사용할 수 있습니다.

0

www.php.net의 설명서를 읽어 보시기 바랍니다 : 당신이 달성하려고하는 무엇

<?php 
    $number = 0; // Set the Value 
    try { 
     if($number != 0) throw new Exception('number not equal to 0',E_ERROR); 
     echo "Number gt 0"; 
    } catch (Exception $e) { 
     echo 'Caught exception: ', $e->getMessage(), "\n"; 

    } 
    // CONTINUE 
    ?> 
관련 문제