我试图隔离这个问题(在我的应用程序之外生成它),但我不能。
try {
$has_cache = Cache::has($cache_key);
}
catch (DecryptException $e) {
echo "No biggie";
exit;
}
我也试过catch (Exception $e)
,同样的事情发生了。
使用此代码,我在第二行得到了DecryptException。怎么会发生这种情况,它在try块中?
就像我说的那样,我试图在一个干净的项目上做同样的事情,但它抓住了异常,所以我问我在哪里弄乱了。
答案 0 :(得分:24)
如果您的应用程序是 namespaced ,则需要使用
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仍然 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 - 在“解密价值”下
可能对其他人有帮助。