Warum kann ich die Methode, die die Laufzeitausnahme auslöst, in Android nicht sehen? Oder ist sie da und ich verstehe nicht, wie ich den Stack-Trace lesen kann? In Flash ist es einfach zu sehen, wo der Fehler ausgelöst wird. In Android ist das nicht so einfach. Vielleicht, weil er in einem anderen Thread ausgelöst wird. Ich habe keine Ahnung. Angehängt sind die Sceens. Können Sie sehen, wo der Fehler in der Stapelverfolgung ausgelöst wird?
Antworten
Zu viele Anzeigen?Das Problem ist, dass Sie den Stack-Trace noch nicht weit genug "entrollen" lassen. Wenn die Ausnahme ausgelöst wird, müssen Sie weiter durchlaufen, bis Sie die Ausnahme in LogCat sehen (was Sie in der Standard-Debug-Ansicht sehen können sollten).
Hier ist zum Beispiel mein Code:
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);
}
}
Wenn die Ausnahme schließlich ganz nach oben auf den Stapel geworfen wird, sehe ich dies schließlich in meinem LogCat-Fenster:
Hier sehen Sie oben in der Stapelverfolgung die ausgelöste Ausnahme. Dies sagt jedoch nicht viel aus (außer, was passiert ist). Im unteren Teil des LogCat-Fensters sehen Sie, was die eigentliche Ursache war (die Sie sehen werden, wenn die gesamte Ausnahme entrollt wird). In diesem speziellen Fall trat sie in meiner Methode HelloAndroid.onCreate() auf (die ich ausgewählt habe). Wenn Sie auf diese Zeile doppelklicken, gelangen Sie zu Ihrem Code und zu der Stelle, an der die Ausnahme tatsächlich aufgetreten ist.
Ich habe den Debug-Modus nie benutzt, aber ich verwende die LogCat-Ansicht. Sie aktivieren sie in
Fenster --> Ansicht anzeigen --> Andere --> Android --> LogCat.
Wenn eine Ausnahme ausgelöst wird, wird sie im Protokoll in rot angezeigt. Meiner Erfahrung nach tritt das eigentliche Problem nie am Anfang der Ausnahme auf, sondern erst nach der Zeile
"Verursacht durch"
Dort sehen Sie, in welcher Zeile Ihres Codes die Ausnahme erzeugt wurde, und können durch einen einfachen Doppelklick dorthin wechseln.