2011-10-02 82 views
2

为什么我看不到在Android中引发运行时异常的方法?或者它在那里,我不明白如何读取堆栈跟踪?在Flash中,很容易看到错误发生在哪里。在Android中,这并不容易。也许是因为它引发了一个不同的线程。我不知道。附上的是sceens。你能看到错误在栈跟踪中抛出的位置吗?Android Stack Trace - 在哪里显示错误?

enter image description here

enter image description here

回答

0

调试堆栈跟踪模式不显示它。 Logcat可能。

1

我从来没有使用调试模式,但是我用的是logcat的视图。你在激活它

窗口 - >显示视图 - >其他 - > Android - > LogCat。

如果抛出异常,日志会以红色显示。根据我的经验,真正的问题不会出现在异常的开始,它出现在一行

“引发的”

那里,你会看到在这行代码生成异常,并能后只需双击它即可到达那里。

4

问题是你还没有让堆栈跟踪“展开”出来。抛出异常时,您必须一直保持直到您看到LogCat中出现异常(您应该能够在默认的Debug视图中看到该异常)。

例如,这里是我的代码:

public class HelloAndroid extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     throw new RuntimeException("Exception"); 
     //setContentView(R.layout.main); 
    } 
} 

当异常最终被抛出一路向上堆栈,我终于看到这我logcat的窗口内:

enter image description here

如果你看这里,你可以看到堆栈跟踪的顶部,抛出的异常。但是,这并没有告诉你很多(除了发生的事情)。在LogCat窗口的底部,您可以看到实际原因来自哪里(一旦展开整个异常,您会看到该原因)。在这个特殊情况下,它出现在我的HelloAndroid.onCreate()方法中(我选择了它)。当你双击这行时,你将被带到你的代码和实际发生异常的地方。

+0

这是一个很好的答案,但不是我问的问题。我询问了有关调试器堆栈跟踪而不是log cat的信息。您无法退后一步并通过LogCat。 – user123321

+0

@musselwhizzle - 它以同样的方式工作。通过调试器,你只是不远处。 (也就是说,你在杂草丛生的地方 - 继续前进,你最终会打到你的断点。) – JasCav