0%

php除数为0无法捕获

先看一个代码

1
2
3
4
5
6
7
$num = 0;

try {
echo 1 / $num;
} catch (Exception $e) {
echo $e->getMessage();
}

这时候得catch是无法捕获除数为0得错误

修复

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
function errorHandler($errno, $errstr, $errfile, $errline) {
// 检查错误类型是否为除以零
if ($errno == E_WARNING && strpos($errstr, 'Division by zero') !== false) {
throw new Exception('Division by zero error');
}
// 可以在这里处理其他类型的错误
}

// 设置自定义错误处理函数
set_error_handler('errorHandler');

$num = 0;

try {
echo 1 / $num;
} catch (Exception $e) {
echo $e->getMessage(); // 这将输出 "Division by zero error"
}