Exception Laravel 4无法捕获异常

Exception Laravel 4无法捕获异常,exception,exception-handling,laravel,Exception,Exception Handling,Laravel,我曾试图隔离这个问题(在我的应用程序之外产生),但我做不到 try { $has_cache = Cache::has($cache_key); } catch (DecryptException $e) { echo "No biggie"; exit; } 我还尝试了一个捕获(异常$e),同样的情况也发生了 使用这段代码,我在第二行得到一个DecryptException异常。这怎么会发生,它在试块中 正如我所说,我试图在一个干净的项目上做同样的事情,但它遇到了异常

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

try {
    $has_cache = Cache::has($cache_key);
}
catch (DecryptException $e) {
    echo "No biggie";
    exit;
}
我还尝试了一个
捕获(异常$e)
,同样的情况也发生了

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

正如我所说,我试图在一个干净的项目上做同样的事情,但它遇到了异常,所以我想问,我在哪里会把事情搞砸。

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

catch(\Exception$e);
//或者最好
catch(\RuntimeException$e);
同样,我认为您试图捕获的
DecryptException
是在
illighted\Encryption
中命名的,因此您需要

catch(\illumb\Encryption\DecryptException)
//或者在尝试/捕获之前的某个地方使用“use”
使用\照明\加密\解密异常

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

对于Laravel 5.1,您应该编写(通常在文件开头有其他使用说明):

catch语句之前:

try {
    $data = \Crypt::decrypt($key);
} catch (DecryptException $e) {
    echo 'caught exception';
    exit();
}
参考:-在“解密值”下


可能对其他人有帮助。

可能有多个DecryptException类,这是我唯一能想到的。我已经更新了我的问题,因为我尝试使用“catch(Exception$e)”,但这也不起作用。您能添加实际的错误消息吗?+1作为您的答案。在命名空间中工作真的把我搞砸了。有没有办法只声明“uses/”之类的?每个全局类都必须反斜杠,这有点令人恼火。使用括号语法,您可以定义
名称空间{/*code here*/}
(在
名称空间
关键字后没有标识符),这样全局类就不需要
\
,但您不能在其中定义名称空间类(
类a\b{
无效)而且你不能把它们放在窝里,所以这可能对你没什么好处。对于函数和常量,如果在当前NS中找不到,至少会内置一个回退,从全局NS加载它们。当然,你总是可以
使用Foo、Bar、Baf
(其中
Foo
等是全局空间中的类)实际上,您应该提出一个问题,也许其他人知道一个更好的选择,因为我不太喜欢PHP如何实现名称空间(非常温和地说),并试着避免它们,而PHP一般来说,现在我有一个api,它的路由是用名称空间分组的。相应的类也有各自的名称空间,因此我花了相当长的时间才意识到,如果我想在api中捕获异常,我需要为异常使用全局名称空间-
\Exception
try {
    $data = \Crypt::decrypt($key);
} catch (DecryptException $e) {
    echo 'caught exception';
    exit();
}