[JAVA] Im Ausnahmefall wird das Warten auf den Debugger erneut angezeigt, und es besteht das Problem, dass die Logcat-Ausnahme nicht angezeigt wird.

・ Obwohl das Problem nicht behoben wurde, wurde die Ursache identifiziert. Wenn Sie möchten, beziehen Sie sich bitte darauf. ・ Da es von einer Person geschrieben wurde, die nicht viel Erfahrung in der Anwendungsentwicklung hat, lesen Sie es bitte nach sorgfältiger Überlegung, dass es möglicherweise falsch ist.

Als in Android Studio eine Ausnahme auftrat, wurde auf den Debugger gewartet, und selbst wenn ich zu diesem Zeitpunkt versuchte, die Ausnahme zu sehen, verschwand Logcat und ich konnte sie nicht sehen.

Dieses Warten auf den Debugger erfolgt jedes Mal, wenn Sie mit dem Debuggen beginnen.

Es gibt Zeiten, in denen es nicht an der Zeit ist, herauszukommen. Als ich ein wenig versuchte, unter welchen Bedingungen es herauskam, kam es unter den folgenden Bedingungen heraus. Die Ausnahme ist

  int[] i = null;
  for(int a:i){
  }

Ich habe mit dem erweiterten for auf das null int-Array zugegriffen und eine RuntimeException verursacht.

Da es Zeiten gibt, in denen Logcat gesehen werden kann und Zeiten, in denen es nicht gesehen werden kann, waren die Bedingungen wie folgt, als ich versuchte zu sehen, unter welchen Bedingungen es sichtbar war und unter welchen Bedingungen es nicht sichtbar war. Annahme

    1. Erstellen Sie 3 Aktivitäten (Aktivität1, Aktivität2, Aktivität3)
  1. Erstellen Sie eine Schaltfläche in Aktivität1 und Aktivität2, sodass sich der Bildschirm ändert, wenn die Schaltfläche gedrückt wird (Aktivität1 → Aktivität2 → Aktivität3).

Wenn sichtbar: In Aktivität1 und Aktivität2 tritt eine Ausnahme auf. Wenn nicht sichtbar: In Aktivität3 tritt eine Ausnahme auf. Hier ist die spezifische Quelle (ein Muster, in dem das Warten auf den Debugger angezeigt wird und Logcat nicht angezeigt wird).

Activity1

public class Activity1 extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ConstraintLayout constraintLayout =findViewById(R.id.baseLayout);

        Button button = new Button(this);
        button.setText("Zum 2 ..");
        button.setOnClickListener((v)->{
            Intent intent = new Intent(this,Activity2.class);
            startActivity(intent);
        });
        constraintLayout.addView(button);
    }
}

Activity2

public class Activity2 extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ConstraintLayout constraintLayout =findViewById(R.id.baseLayout);

        Button button = new Button(this);
        button.setText("Bis 3 ..");
        button.setOnClickListener((v)->{
            Intent intent = new Intent(this,Activity3.class);
            startActivity(intent);
        });
        constraintLayout.addView(button);
    }
}

Activitiy3

public class Activity3 extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        int[] i = null;
        for(int a:i){//Ich mache hier eine Ausnahme
        }
    }
}

Wenn Sie diese Ausnahme zu Aktivität1 und Aktivität2 bringen, wird das Warten auf den Debugger nicht angezeigt und Sie können Logcat sehen. (Die Quelle wird weggelassen, weil sie redundant wird.)

Die Ausnahme ist, dass das Warten auf den Debugger angezeigt wird und die App danach erneut gestartet wird.

Ich wollte nur auf den Debugger warten, aber als ich genau hinschaute, dass in Activity3 eine Ausnahme auftrat, fiel diese aus und der Bildschirm von Activity1 wurde erneut gestartet.

Als ich an der Stelle ankam, an der "Es gibt ein Problem beim Neustart dieser Anwendung" und nach "Neustarts von Android-Ausnahmen" usw. hier von Terratail suchte / Fragen / 28406), ich bin zu der Frage gekommen

  1. Wenn eine Ausnahme auftritt, verschwindet der Prozess und die Anwendung wird beendet, die Aufgabe bleibt jedoch bestehen.
  1. Die Aktivität, bei der die Ausnahme aufgetreten ist, verschwindet aus der Aufgabe, und die verbleibenden Aktivitäten werden gemäß der Aufzeichnungsreihenfolge der Aufgabe geöffnet.

Ich dachte, dass es damit zusammenhängen könnte. Und wenn in Aktivität1 eine Ausnahme auftritt, verschwindet "Aktivität aus Aufgabe", sodass ich verstehe, dass es keine Aktivität gibt und die App abstürzt, aber ich habe mich gefragt, wie es ist, sie zu löschen, selbst wenn ich in Aktivität2 eine Ausnahme eingefügt habe.

Nachdem ich weiter gegangen war, stellte ich fest, dass im Falle einer Ausnahme auch die Aktivität des Anrufers zerstört wird und alle Punkte auf den Punkt dieser Zeit gekommen sind.

Zusammenfassung Ich werde es erklären, indem ich eine weitere Aktivität hinzufüge (Aktivität4). Ausnahme tritt in Aktivität1 auf → App endet Eine Ausnahme tritt in Aktivität 2 auf → App endet (Anrufer und Angerufene werden verworfen) Eine Ausnahme tritt in Aktivität 3 auf → Gehen Sie zu Aktivität 1 (Anrufer und Angerufene werden verworfen). Eine Ausnahme tritt in Aktivität 4 auf → Gehen Sie zu Aktivität 2 (Anrufer und Angerufene werden verworfen).

Und ich habe die Ursache verstanden, aber ich habe bereits m (_ _) m in Bezug auf den Umgang damit, also werde ich es als Memorandum zusammenfassen.

Wenn es eine Chance gibt, kann ich mich damit befassen, bis ich Logcat fest sehe, ohne die Anwendung neu zu starten.

Recommended Posts

Im Ausnahmefall wird das Warten auf den Debugger erneut angezeigt, und es besteht das Problem, dass die Logcat-Ausnahme nicht angezeigt wird.
Wenn Tomcat in Eclipse gestartet wird, wird "ClassNotFoundException" angezeigt und kann nicht gestartet werden.
Der starke Parameter ist wahr, kann aber aus irgendeinem Grund nicht in der Tabelle gespeichert werden.