繁体   English   中英

此PHP中的异常处理?

[英]Exception handling in this PHP?

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

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

请帮我。

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();
}

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

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

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

第三:为什么在这里使用异常,而不仅仅是让您的方法返回true到false并在执行分区之前对其进行检查。

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

所以,为什么不能这样:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM