8

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

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

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

使用这段代码,我在第二行得到一个 DecryptException。这怎么会发生,它在 try 块中?

就像我说的,我试图在一个干净的项目上做同样的事情,但它发现了异常,所以我问我在哪里搞砸了。

4

2 回答 2

25

如果您的应用程序是命名空间的,则需要使用

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

同样,我认为DecryptException您要捕获的名称是命名空间,Illuminate\Encryption因此您需要

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

请记住,Laravel 4 仍然是alphapre-beta(显然他们自己也不确定),所以它绝不是稳定的,可能不是生产的最佳选择。

于 2013-01-14T13:58:54.160 回答
4

对于 laravel 5.1,您应该编写(通常在文件开头带有其他使用语句):

use Illuminate\Contracts\Encryption\DecryptException;

在 catch 语句之前:

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

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

可能对其他人有帮助。

于 2016-02-10T05:57:20.440 回答