0

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

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

请帮我。

4

3 回答 3

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();
}
于 2013-02-11T10:42:12.290 回答
0

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

于 2013-02-11T10:27:17.193 回答
-1

首先:您正在第二行代码处进行除法(可以除以零)。

第二:由于您抛出错误,因此无需在您的方法中返回 false。

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

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

那么,为什么不能这样:

case '/':                  
    if($b > 0)
        $prod = $a / $b;
    break; 
于 2013-02-11T10:25:32.837 回答