下面的代码引发致命错误,但由于任何原因我都无法捕获。
namespace App\Http\Controllers;
use Carbon\Carbon;
use Log;
public function testError()
{
try {
$now = Carbon::now();
$datetime = null;
//$datetime = Carbon::parse($datetime);
$lastlock = $datetime->diffInSeconds($now);
Log::info($lastlock);
//
}catch (\Exception $d){
Log::info("error:: " . $d->getMessage());
}
}
它引发致命错误
FatalErrorException in TestController.php line 310:
Call to a member function diffInSeconds() on null
我希望它应该在catch块中处理。
请提出建议。
答案 0 :(得分:0)
使用Throwable代替Exception
try {
$now = Carbon::now();
$datetime = null;
//$datetime = Carbon::parse($datetime);
$lastlock = $datetime->diffInSeconds($now);
Log::info($lastlock);
//
}catch (\Throwable $d){
Log::info("error:: " . $d->getMessage());
}
更新
似乎php 5处理异常的方式不同,而我使用的是php 7.2
尝试一下:
try {
$now = Carbon::now();
$datetime = null;
//$datetime = Carbon::parse($datetime);
$lastlock = $datetime->diffInSeconds($now);
Log::info($lastlock);
//
} catch(Error $e) {
dd($e->getMessage());
} catch(Throwable $e) {
dd($e->getMessage());
}