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

最初に: 2番目のラインコードで除算を行っています(これはゼロで除算できます)。

2番目:エラーをスローしているので、メソッドでfalseを返す必要はありません。

3番目:なぜここで例外を使用し、メソッドがfalseのtrueを返し、デバイスを実行する前にそれをチェックするだけではないのか。

4番目: $ yの値をチェックするだけでよいのに、なぜメソッドがあるのか​​。メソッドを呼び出すか、ifステートメントを含めるには、両方とも1行のコードが必要です。

だから、なぜそれは次のようにできないのですか?

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