Behandlung von Java-Ausnahmen

Auf Ausnahmen prüfen: Ergreifen Sie die Initiative, um damit umzugehen

  1. Catch: Verwenden Sie die Try-Catch-Block-Verarbeitung
  2. Auslösen: Deklarieren Sie mögliche Ausnahmen für die Methode, und der Aufrufer behandelt sie.
    Häufige Ausnahmen:
    Fügen Sie hier eine Bildbeschreibung ein

versuchen Sie ... fangen ...

public class Test {
    
    
    public static void main(String[] args) {
    
    
        try {
    
    
            System.out.println(1 / 0);
        } catch (Exception e) {
    
    
            // 打印异常跟踪的信息
            e.printStackTrace();
            System.out.println("分母为零");
        }
        finally{
    
    
            System.out.println("end...");
        }
    }
}

Ergebnis:

java.lang.ArithmeticException: / by zero
	at com.cao.test.lesson04.Test.main(Test.java:6)
分母为零
end...

Sie können je nach Art der Ausnahme auch verschiedene Fangblöcke eingeben

public class Test {
    
    
    public static void main(String[] args) {
    
    
        try {
    
    
            System.out.println(1 / 1);
            int[] arr=new int[2];
            System.out.println(arr[2]);
        } catch (ArithmeticException a) {
    
    
            // 打印异常跟踪的信息
            a.printStackTrace();
            System.out.println("分母为零");
        }catch (ArrayIndexOutOfBoundsException A){
    
    
            A.printStackTrace();
            System.out.println("数组越界...");
        }
        finally{
    
    
            System.out.println("end...");
        }

    }
}

Ergebnisse der:

1
数组越界...
end...
java.lang.ArrayIndexOutOfBoundsException: 2
	at com.cao.test.lesson04.Test.main(Test.java:8)

Manchmal werden Ausnahmen zum Verzweigen verwendet

public class Test1 {
    
    
    public static void main(String[] args) {
    
    
        try{
    
    
            System.out.println(1/1);
            System.out.println(args[0]);
        }catch (ArithmeticException A){
    
    
            System.out.println("-------");
        }catch (ArrayIndexOutOfBoundsException AA){
    
    
            System.out.println("+++++++");
        }
    }
}

Ergebnisse der:

1
+++++++

wirft Aussage:

public class Test {
    
    
    public void loadClass() throws ArithmeticException {
    
    
        System.out.println(1/0);
    }
}
public class Start {
    
    
    public static void main(String[] args) {
    
    
        Test test = new Test();
        try {
    
    
            test.loadClass();
        } catch (ArithmeticException e) {
    
    
            System.out.println("error...");
            e.printStackTrace();
        }
    }
}
error...
java.lang.ArithmeticException: / by zero
	at com.cao.test.lesson04.Test.loadClass(Test.java:6)
	at com.cao.test.lesson04.Start.main(Start.java:9)

Ein Ort, an dem man aufpassen muss

public class Test2 {
    
    
    int i=1;
    public int show(){
    
    
        try {
    
    
            System.out.println(1 / 0);
            System.out.println("......");
            return ++i;
        } catch (ArithmeticException A){
    
    
            System.out.println("捕获异常...");
            return ++i;
        }finally {
    
    
            System.out.println("end...");
            return ++i;
        }
    }

    public static void main(String[] args) {
    
    
        Test2 test2=new Test2();
        int res=test2.show();
        System.out.println(res);
        System.out.println(test2.i);
    }
}

Ergebnis:

捕获异常...
end...
3
3

Zu catch (ArithmeticException A){ System.out.println("捕获异常..."); return ++i;}der Zeit wurde es ++iaber nicht ausgeführt return.


Benutzerdefinierte Ausnahme:

1. Integrierte Ausnahmen können nicht immer ausreichen, um alle Fehler abzufangen. Daher sind benutzerdefinierte Ausnahmeklassen erforderlich.
2. Benutzerdefinierte Ausnahmeklassen sollten Unterklassen der Ausnahmeklasse (oder eine Unterklasse der Ausnahmeklasse) sein.
3. Alles, was erstellt wurde Benutzerdefinierte Ausnahmeklassen können die von der Throwable-Klasse definierten Methoden erhalten.

CustomException:

public class CustomException extends RuntimeException{
    
    
    public CustomException(){
    
    

    }
    public CustomException(String message){
    
    
        super(message);
    }
}

Nutzer:

public class User {
    
    
    public void login(String userName){
    
    
        if(userName=="admin"){
    
    
            throw new CustomException("用户名不能为admin...");
        }
        else{
    
    
            System.out.println("登陆成功...");
        }
    }

    public static void main(String[] args) {
    
    
        User user=new User();
        user.login("admin");
    }
}

Ergebnis:

Exception in thread "main" com.cao.test.lesson04.demo.CustomException: 用户名不能为admin...
	at com.cao.test.lesson04.demo.User.login(User.java:6)
	at com.cao.test.lesson04.demo.User.main(User.java:16)

Wenn Benutzer ist:

public class User {
    
    
    public void login(String userName) {
    
    
        if (userName == "admin") {
    
    
            throw new CustomException("用户名不能为admin...");
        } else {
    
    
            System.out.println("登陆成功...");
        }
    }

    public static void main(String[] args) {
    
    
        User user = new User();
        try {
    
    
            user.login("admin");
        } catch (CustomException c) {
    
    
            System.out.println("用户名不能为admin...");
        }
    }
}

Das Ergebnis ist:

用户名不能为admin...

Der Unterschied zwischen Wurf und Wurf:

1) Throw ist eine Anweisung, die eine Ausnahme auslöst. Throws ist eine Methode, die eine Ausnahme auslöst. Throws kann alleine verwendet werden, throw kann jedoch nicht.
2) Throws werden am Kopf der Methodenfunktion angezeigt. Throw wird am Funktionskörper angezeigt.
3) Würfe weisen auf Anomalien hin Es besteht die Möglichkeit, dass diese Ausnahmen nicht unbedingt auftreten; Wurf ist eine Ausnahme, und die Ausführung von Würfen muss eine Art Ausnahme auslösen;
4) Beide sind passive Methoden zur Behandlung von Ausnahmen (Negativität bedeutet hier nicht Diese Methode ist nicht gut), es wird nur eine Ausnahme ausgelöst oder kann ausgelöst werden, aber die Funktion behandelt die Ausnahme nicht. Die tatsächliche Behandlung der Ausnahme wird durch den oberen Aufruf der Funktion behandelt.

Ich denke du magst

Origin blog.csdn.net/qq_44371305/article/details/113357772
Empfohlen
Rangfolge