2013-02-11 3 views
0

PHP에서 예외를 처리하려면 어떻게해야합니까? 예를 들어, 다음과 같은 코드에서 :이 PHP에서는 예외 처리가 필요합니까?

<?php 
    $a=5; 
    $b=0 
    $c=($a/$b); 
    echo $c; 
?> 

도와주세요.

+0

의 사용 가능한 복제 [PHP : 오류 대 예외] (http://stackoverflow.com/questions/841500/php-exceptions-vs-errors). 모든 대답을 확인하십시오. –

+0

기본적으로 경고가 발생하며 예외는 발생하지 않습니다. – Niko

답변

1

PHP는 예외를 발생시키지 않고 경고와 오류 메시지를 발생시키기 때문에 여기서 아무것도 잡을 수 없습니다. 그러나이 동작을 수정할 수 있습니다

// Register a custom error handler that throws an ErrorException 
// whenever a warrning or error occurs 
set_error_handler(function ($errno, $errstr, $errfile, $errline) { 
    throw new ErrorException($errstr, 0, $errno, $errfile, $errline); 
}); 

$a = 5; 
$b = 0; 

// Now a division by zero will result into an ErrorException being thrown 
try { 
    $c = $a/$b; 
    echo $c; 
} catch (ErrorException $e) { 
    echo 'Error: ' . $e->getMessage(); 
} 
+0

작동합니다. 그러나 만약 당신이 set_error_handler (function ($ errno, $ errstr, $ errfile, $ errline) { 새로운 ErrorException ($ errstr, 0, $ errno, $ errfile, $ errline)을 던져 설명; }); 내 이해를 분명히 할거야. 감사합니다. – ripa

+0

이것은 사용자 정의 오류 처리기를 등록합니다 - 기본적으로 PHP는 오류 메시지를 화면에 기록하거나 인쇄합니다. 커스텀 에러 핸들러를 등록함으로써 에러 메시지를 다르게 처리하고 싶다고 PHP에 알릴 수 있습니다. 그런 다음 PHP는 메시지를 출력하는 대신 오류 처리기를 호출합니다. 이 경우 오류 처리기에서 예외를 throw합니다. 즉, 오류 메시지를 예외로 바꿉니다. – Niko

-1

첫 번째 : 두 번째 줄 코드에서 나누기를하고 있습니다 (0으로 구 성할 수 있음).

두 번째 : 오류가 발생하여 메서드에서 false를 반환 할 필요가 없습니다.

세 번째 : 여기에서 예외를 사용하는 이유는 무엇이겠습니까? 메소드를 false로 반환하고 정의를 실행하기 전에 확인하는 이유는 무엇입니까?

넷째 : 왜 $ y의 값만 확인하면 되는가? 메소드를 호출하거나 if 문을 포함 시키려면 단 한 줄의 코드 만 있으면됩니다. PHP는 0으로 나누기에 예외가 발생하지 않습니다 지금까지 내가 알고 있어요으로

case '/':     
    if($b > 0) 
     $prod = $a/$b; 
    break; 
0

: 같은

는 그럼, 왜 그냥가 될 수 없습니다. 나는 5.3을 시험했다, 그것은 경고를 방아쇠를 당기고 그래서 모든 더 작은 버전 일 것입니다. 그래서 try 블록에 두는 것은 아무 것도하지 않을 것입니다. ErrorException 클래스를 사용하여 PHP 오류를 예외로 매핑 할 수 있으며, 일부는 오류 및 예외 처리기로 해결할 수 있습니다. 그 주변의 참조 구현에 대해서는 https://github.com/sam-at-github/php_error_exceptions을 참조하십시오.

관련 문제