应用程序崩溃,没有堆栈跟踪

时间:2017-09-07 15:52:17

标签: android android-studio

前言我改变了标题。很难理解为什么在调试时,有时未捕获的异常会向Logcat打印'FATAL EXCEPTION',有时它们不会。

当我到达client1.getInputStream()行时,下面的简化示例崩溃了。 Logcat内部没有堆栈跟踪或其他指示,表明出了什么问题。我正在运行Android Studio 3.0.0beta4。

  • 为什么会崩溃? (更新 - 崩溃是由于SecurityException)
  • 为什么Logcat没有显示堆栈跟踪或 其他错误?

更新 好吧,我弄清楚它崩溃的原因。我添加catch(Exception ex) {...}并发现实际上抛出异常,因为我忘了测试它。愚蠢的错误,我没有在清单中包含INTERNET权限。

所以,我仍然想知道为什么我没有得到unhandle异常的错误指示。该应用程序只是悄然消失。

编辑一位评论者说

  

在java中,未打印未处理的异常

当我强制执行未处理的NullPointerException

时,这是logcat消息
FATAL EXCEPTION: Thread-6729
           Process: com.example.myapplication, PID: 30824
           java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.InputStream java.net.URLConnection.getInputStream()' on a null object reference
           at com.example.myapplication.MainActivity.GetDataAsyncFromPlaystore(MainActivity.java:79)
           at com.example.myapplication.MainActivity$1$1.run(MainActivity.java:42)
           at java.lang.Thread.run(Thread.java:818)

那么,为什么不为SecurityException?

Edit2 为了让事情更加混乱,我发现当我在异常点之前设置一个断点时,然后逐步执行代码并跨过违规行(导致该行安全异常),应用程序突然终止,没有任何迹象表明原因。但是,如果我在到达违规行之前按F9,我确实会在Logcat中记录“FATAL EXCEPTION”消息。 (因此,我已将“android-studio”标签添加回问题。)

所以,同样的问题,措辞略有不同:为什么异常在调试单向时打印'FATAL EXCEPTION'消息,而不是另一种?

(简化)代码

public void GetDataFromWebsite()
{
    Uri queryUri = Uri.parse("https://play.google.com/store/search?q=Planning&c=apps");
    try {
        URL queryUrl = new URL(queryUri.toString());
        URLConnection client1 = queryUrl.openConnection();
        InputStream in = client1.getInputStream();
        Log.d("Test", "Okay");
    } catch (MalformedURLException muex) {
        Log.e("Test", "Malformed Url", muex);
    } catch (IOException ioex) {
        Log.e("Test", "IO Error", ioex);
    // } catch(Exception ex) {
    //    Log.e("Test","Other Exception", ex);
    }
}

注意:

1 个答案:

答案 0 :(得分:1)

您只是抓住了MalformedURLExceptionIOException。所以你不会得到其他例外。 赶上例外,你会得到一个痕迹。

UnHandled异常未在android log cat中打印。您可以按UncaughtExceptionHandler打印UnHandled异常。以下是实施UncaughtExceptionHandlerAddIns2

的方法

NullpointerExceptionSecurityException之间没有相关性。如何被SecurityException抓住。