簡體   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