我使用NetBeans作为我开发Android的IDE。
然而,当我得到一个异常时,Netbeans不会像我期望的那样在异常上中断。
我已经选中了"停止未捕获的异常"框,可以在选项-> Java调试器->停止未捕获的异常中找到,但这没有帮助。
此外,我在哪里可以看到实际的异常消息?我什么也没看见。我不知道异常何时何地发生,只知道它确实发生了。
我在netbeans.org网站上读到6.9.1的一个bug已经修复了,但是在7.0中似乎没有修复。
调试窗口根本没有说任何有用的东西,给出了一些毫无意义的堆栈跟踪形式,因为它没有指定我自己的任何代码。
我从Eclipse切换过来,因为IDE很糟糕,NetBeans更精简,但调试需要修复才能有用。
当我使用netbeans时也有这个问题。为了获得异常消息,我使用了try-and-catch。在catch()语句中,调用一个包含一些代码的函数,并在其上设置一个断点。然后,当给出异常时,catch语句中的断点将被调用,您可以从exception对象中读取信息(错误消息,堆栈等)。
try
{
// Doing something here
}
catch (Exception e1)
{
// This is called when an exception occurs
doSomething(); /// Put breakpoint here
}
更新:
我不确定这是否适用于android,但您可以尝试输入"新断点"。当输入一个新的断点来中断异常时,您需要知道确切的包/类异常名。例如,如果你想抓一个NullPointerException,然后转到Debug>> New Breakpoint创建一个新断点并输入的异常类名字段中添加nullpointerexception断点属性对话框。选择是否在捕获异常、未捕获异常或两者同时中断,如果该类异常在类/项目中出现,它将击中一个断点。
我有这样的行为,我有我的源文件,生成异常不在"默认包"。当我把所有东西都移到"default package"时,它开始正常工作,并在异常情况下自动停止。
这个答案实际上也回答了这个问题:https://stackoverflow.com/a/2671390/415551
引用用户Finbarr:
转到调试>新建断点(或者CTRL+SHIFT+F8)。改变在右上方的下拉菜单中将断点类型设置为Exception。在例外类字段中输入
java.lang.NullPointerException
。选择在被捕获、未捕获或两者同时中断。调试您的代码,并观察当抛出异常。
只需将java.lang.NullPointerException
更改为java.lang.Exception
即可在任何错误时中断