Heim  >  Artikel  >  Java  >  2020 Neue Java-Interviewfragen – Ausnahme

2020 Neue Java-Interviewfragen – Ausnahme

王林
王林nach vorne
2020-06-17 17:12:272894Durchsuche

2020 Neue Java-Interviewfragen – Ausnahme

1. Was ist der Unterschied zwischen Wurf und Würfen?

throws wird verwendet, um alle Ausnahmeinformationen zu deklarieren, die eine Methode auslösen kann, um die Ausnahme zu deklarieren, sie jedoch nicht zu behandeln. Stattdessen wird die Ausnahme hochgeladen und derjenige, der sie aufruft, behandelt. Throw bezieht sich auf einen bestimmten Ausnahmetyp, der ausgelöst wird.

2. Was ist der Unterschied zwischen „final“, „finally“ und „finalize“?

final kann Klassen, Variablen und Methoden ändern. Eine geänderte Klasse bedeutet, dass die Klasse nicht vererbt werden kann, eine geänderte Methode bedeutet, dass die Methode nicht überschrieben werden kann, und eine geänderte Variable bedeutet, dass die Variable eine Konstante ist kann nicht neu zugewiesen werden.

finally funktioniert im Allgemeinen im Try-Catch-Codeblock. Bei der Behandlung von Ausnahmen fügen wir normalerweise die Codemethode ein, die ausgeführt werden muss, was bedeutet, dass der Codeblock unabhängig davon ausgeführt wird, ob ein Ausnahme tritt im Allgemeinen auf. Wird zum Speichern von Code zum Schließen von Ressourcen verwendet.

(Empfohlenes Video-Tutorial: Java-Video-Tutorial )

finalize ist eine Methode, die zur Object-Klasse gehört, und die Object-Klasse ist die übergeordnete Klasse aller Klassen. Die Methode wird im Allgemeinen vom Garbage Collector aufgerufen. Wenn wir die gc()-Methode des Systems aufrufen, ruft der Garbage Collector finalize() auf, um Müll zu sammeln.

3. Welcher Teil von try-catch-finally kann weggelassen werden?

Antwort: Catch kann weggelassen werden

Grund:

Eine strengere Aussage lautet eigentlich: Try ist nur für die Behandlung von Laufzeitausnahmen geeignet, Try + Catch ist geeignet zur Behandlung von Laufzeitausnahmen. Zeitausnahme + gewöhnliche Ausnahme. Mit anderen Worten: Wenn Sie versuchen, normale Ausnahmen nur zu behandeln, ohne Catch zu verwenden, wird die Kompilierung nicht erfolgreich sein, da der Compiler streng vorschreibt, dass Sie, wenn Sie sich für das Abfangen gewöhnlicher Ausnahmen entscheiden, Catch verwenden müssen, um sie explizit für die weitere Verarbeitung zu deklarieren. Es gibt keine solche Bestimmung für Laufzeitausnahmen zur Kompilierungszeit, daher kann Catch weggelassen werden, und es ist nichts Falsches daran, den Catch-Compiler hinzuzufügen.

Theoretisch ist der Compiler mit jedem Code unzufrieden und denkt, dass es potenzielle Probleme geben könnte. Selbst wenn Sie dem gesamten Code Try hinzufügen, wird der Code nur während der Laufzeit normal ausgeführt. Fügen Sie eine Skin-Ebene hinzu. Aber sobald Sie try zu einem Codeteil hinzufügen, versprechen Sie dem Compiler ausdrücklich, die Ausnahmen abzufangen, die von diesem Codeteil ausgelöst werden können, anstatt sie nach oben zu werfen. Wenn es sich um eine normale Ausnahme handelt, verlangt der Compiler, dass sie zur weiteren Verarbeitung mit „catch“ abgefangen werden muss; wenn es sich um eine Laufzeitausnahme handelt, wird sie abgefangen und dann verworfen und schließlich verarbeitet, oder es wird ein „catch“ zur weiteren Verarbeitung hinzugefügt.

Was schließlich das Hinzufügen betrifft, handelt es sich um einen „Aufräumvorgang“, der unabhängig davon durchgeführt werden muss, ob eine Ausnahme abgefangen wird oder nicht.

(empfohlene verwandte Tutorials: Java-Eingabeprogramm)

4. Wenn es in try-catch-finally eine Rückkehr gibt, wird es endlich noch hingerichtet werden?

Antwort: Es wird vor der Rückkehr ausgeführt.

Codebeispiel 1:

 
/*
 * java面试题--如果catch里面有return语句,finally里面的代码还会执行吗?
 */
public class FinallyDemo2 {
    public static void main(String[] args) {
        System.out.println(getInt());
    }
 
    public static int getInt() {
        int a = 10;
        try {
            System.out.println(a / 0);
            a = 20;
        } catch (ArithmeticException e) {
            a = 30;
            return a;
            /*
             * return a 在程序执行到这一步的时候,这里不是return a 而是 return 30;这个返回路径就形成了
             * 但是呢,它发现后面还有finally,所以继续执行finally的内容,a=40
             * 再次回到以前的路径,继续走return 30,形成返回路径之后,这里的a就不是a变量了,而是常量30
             */
        } finally {
            a = 40;
        }
 
//      return a;
    }
}

Ausführungsergebnis: 30

Codebeispiel 2:

 
package com.java_02;
 
/*
 * java面试题--如果catch里面有return语句,finally里面的代码还会执行吗?
 */
public class FinallyDemo2 {
    public static void main(String[] args) {
        System.out.println(getInt());
    }
 
    public static int getInt() {
        int a = 10;
        try {
            System.out.println(a / 0);
            a = 20;
        } catch (ArithmeticException e) {
            a = 30;
            return a;
            /*
             * return a 在程序执行到这一步的时候,这里不是return a 而是 return 30;这个返回路径就形成了
             * 但是呢,它发现后面还有finally,所以继续执行finally的内容,a=40
             * 再次回到以前的路径,继续走return 30,形成返回路径之后,这里的a就不是a变量了,而是常量30
             */
        } finally {
            a = 40;
            return a; //如果这样,就又重新形成了一条返回路径,由于只能通过1个return返回,所以这里直接返回40
        }
 
//      return a;
    }
}

Ausführungsergebnis: 40

5. Was sind die häufigsten Ausnahmetypen?

  • NullPointerException: Diese Ausnahme wird ausgelöst, wenn die Anwendung versucht, auf ein Nullobjekt zuzugreifen.

  • SQLException: Ausnahme, die Informationen über Datenbankzugriffsfehler oder andere Fehler liefert.

  • IndexOutOfBoundsException: Wird ausgelöst, wenn angezeigt wird, dass ein Sortierindex (z. B. Sortieren eines Arrays, einer Zeichenfolge oder eines Vektors) außerhalb des gültigen Bereichs liegt.

  • NumberFormatException: Diese Ausnahme wird ausgelöst, wenn die Anwendung versucht, eine Zeichenfolge in einen numerischen Typ zu konvertieren, die Zeichenfolge jedoch nicht in das entsprechende Format konvertiert werden kann.

  • FileNotFoundException: Diese Ausnahme wird ausgelöst, wenn ein Versuch, die durch den angegebenen Pfadnamen dargestellte Datei zu öffnen, fehlschlägt.

  • IOException: Diese Ausnahme wird ausgelöst, wenn eine Art E/A-Ausnahme auftritt. Diese Klasse ist eine allgemeine Klasse für Ausnahmen, die durch fehlgeschlagene oder unterbrochene E/A-Vorgänge generiert werden.

  • ClassCastException: Diese Ausnahme wird ausgelöst, wenn versucht wird, ein Objekt in eine Unterklasse umzuwandeln, die keine Instanz ist.

  • ArrayStoreException: Ausnahme, die beim Versuch ausgelöst wird, ein Objekt des falschen Typs in einem Objektarray zu speichern.

  • IllegalArgumentException: Eine ausgelöste Ausnahme, die darauf hinweist, dass ein unzulässiger oder falscher Parameter an die Methode übergeben wurde.

  • ArithmeticException: Diese Ausnahme wird ausgelöst, wenn abnormale Betriebsbedingungen auftreten. Wenn beispielsweise eine Ganzzahl „durch Null geteilt“ wird, wird eine Instanz dieser Klasse ausgelöst.

  • NegativeArraySizeException: Diese Ausnahme wird ausgelöst, wenn die Anwendung versucht, ein Array mit einer negativen Größe zu erstellen.

  • NoSuchMethodException: Diese Ausnahme wird ausgelöst, wenn eine bestimmte Methode nicht gefunden werden kann.

  • SecurityException: Ausnahme, die vom Sicherheitsmanager ausgelöst wird, um auf eine Sicherheitsverletzung hinzuweisen.

  • UnsupportedOperationException: Diese Ausnahme wird ausgelöst, wenn der angeforderte Vorgang nicht unterstützt wird.

  • RuntimeExceptionRuntimeException: ist die Superklasse von Ausnahmen, die während des normalen Betriebs der Java Virtual Machine ausgelöst werden können.

Wenn Sie mehr über Interviewfragen erfahren möchten, besuchen Sie bitte Java-Interviewfragen.

Das obige ist der detaillierte Inhalt von2020 Neue Java-Interviewfragen – Ausnahme. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen