Laravel 4无法捕捉异常

时间:2013-01-13 23:03:43

标签: exception exception-handling laravel

我试图隔离这个问题(在我的应用程序之外生成它),但我不能。

try {
    $has_cache = Cache::has($cache_key);
}
catch (DecryptException $e) {
    echo "No biggie";
    exit;
}

我也试过catch (Exception $e),同样的事情发生了。

使用此代码,我在第二行得到了DecryptException。怎么会发生这种情况,它在try块中?

就像我说的那样,我试图在一个干净的项目上做同样的事情,但它抓住了异常,所以我问我在哪里弄乱了。

2 个答案:

答案 0 :(得分:24)

如果您的应用程序是 namespaced ,则需要使用

catch(\Exception $e);
// or preferably
catch(\RuntimeException $e);

同样,我认为你要抓住的DecryptExceptionIlluminate\Encryption中被命名空间,所以你需要

catch(\Illuminate\Encryption\DecryptException)
// or use "use" somewhere before the try/catch
use \Illuminate\Encryption\DecryptException

请记住,Laravel 4仍然 alpha pre-beta (显然他们不确定自己),所以它在没办法稳定,可能不是生产的最佳选择。

答案 1 :(得分:3)

对于laravel 5.1,您应该编写(通常在文件的开头加上其他use语句):

use Illuminate\Contracts\Encryption\DecryptException;

在发表声明之前:

try {
    $data = \Crypt::decrypt($key);
} catch (DecryptException $e) {
    echo 'caught exception';
    exit();
}

参考:https://laravel.com/docs/5.1/encryption - 在“解密价值”下

可能对其他人有帮助。