2013-11-14 56 views
0

我很好奇以下是可能的。catch块中的Exception是否可能是空的?

catch (Exception e) { 
    e.printStackTrace(); 
} 

当我调试我的代码,他一跃而起,抓博客 - 到目前为止好 - 但比我检查它是什么类型的异常,它是E =空?

这怎么可能?我有一个例外,但例外情况为空?

问候,

+0

检查: Areo

+0

出于某种原因,调试器还没有在catch块中的第一条语句之前初始化异常。如果您之前添加了一个语句,或者如果您进入并退出,它应该被初始化。 –

+0

当您检查值时,您的调试指针在哪里?如果它在'catch(Exception e){'那么你的调试器还没有捕获到'e'的值。转到下一行并再次检查。 – LuigiEdlCarno

回答

0

也许这是与调试器或虚拟机中的问题 - 对异常是懒加载,即,未加载异常,直到需要。只要不调用异常的方法,它的数据就不会被加载。当第一种方法被调用时,虚拟机填充异常字段。

执行printStackTrace或使用调试器执行该异常中的一个方法(例如Eclipse中的Expression View)后,您应该会看到异常。

+0

我正在使用Android Studio,任何示例我应该在那里做什么? – user2978538

+0

对不起,我只使用Eclipse - 但看到了类似的东西:异常是__empty__只有在调用printStackTrace后,所有字段都被填充。在执行下一行之后会发生什么,我的意思是'e.printStackTrace()'。它打印正确吗?你能看到调试器中的异常吗? –

+0

好吧,我的调试指针在e.printStackTrace - 或者你是什么意思? – user2978538

相关问题