Laravel:无法捕获Carbon抛出的异常

时间:2018-08-07 12:20:03

标签: php laravel laravel-5.2 php-carbon

下面的代码引发致命错误,但由于任何原因我都无法捕获。

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块中处理。

请提出建议。

1 个答案:

答案 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());
}