这个PHP中的异常处理?

时间:2013-02-11 10:14:29

标签: php exception exception-handling

如何在PHP中处理异常?例如,在这样的代码中:

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

请帮帮我。

3 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:0)

据我所知,PHP不会在除以零时抛出异常。我测试了5.3,它会触发警告,因此所有较小版本都会发出警告。所以把它放在试块中不会做任何事情。您可以使用ErrorException类将PHP错误映射到异常,并且可以使用错误和异常处理程序。请参阅https://github.com/sam-at-github/php_error_exceptions以了解该问题的参考实现。

答案 2 :(得分:-1)

首先:你在第二行代码处进行除法(可以将其除零)。

第二个:无需在方法中返回false,因为您输入了错误。

第三:为什么在这里使用异常而不只是让你的方法返回true为false并在执行devision之前检查它。

第四:如果您只需要检查$ y的值,为什么要使用方法。调用方法或包含if语句只需要一行代码。

那么,为什么它不能就像:

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