PHPで例外を処理するにはどうすればよいですか?例として、次のようなコードで:
<?php
$a=5;
$b=0
$c=($a/$b);
echo $c;
?>
私を助けてください。
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 エラーを例外にマップすることができます。そのねじ込みのリファレンス実装については、https://github.com/sam-at-github/php_error_exceptionsを参照してください。
最初に: 2番目のラインコードで除算を行っています(これはゼロで除算できます)。
2番目:エラーをスローしているので、メソッドでfalseを返す必要はありません。
3番目:なぜここで例外を使用し、メソッドがfalseのtrueを返し、デバイスを実行する前にそれをチェックするだけではないのか。
4番目: $ yの値をチェックするだけでよいのに、なぜメソッドがあるのか。メソッドを呼び出すか、ifステートメントを含めるには、両方とも1行のコードが必要です。
だから、なぜそれは次のようにできないのですか?
case '/':
if($b > 0)
$prod = $a / $b;
break;