Heim  >  Artikel  >  Java  >  Verstehen Sie kurz die Methoden zum Auslösen von Ausnahmen in der Java-Programmierung

Verstehen Sie kurz die Methoden zum Auslösen von Ausnahmen in der Java-Programmierung

高洛峰
高洛峰Original
2017-01-18 14:58:431638Durchsuche

Jeder Java-Code kann Ausnahmen auslösen, z. B. von Ihnen selbst geschriebener Code, Code aus dem Java-Entwicklungsumgebungspaket oder dem Java-Laufzeitsystem. Jeder kann über die throw-Anweisung von Java eine Ausnahme auslösen. Jede von einer Methode ausgelöste Ausnahme muss eine throws-Klausel verwenden.

1. throws löst eine Ausnahme aus

Wenn eine Methode eine Ausnahme auslösen kann, diese jedoch nicht verarbeiten kann, können Sie dies mit der throws-Klausel in der Methodendeklaration deklarieren löst eine Ausnahme aus. Beispielsweise kann es bei einem fahrenden Auto zu einer Fehlfunktion kommen. Das Auto selbst kann die Fehlfunktion nicht beheben, also überlassen Sie es dem Fahrer.

Die throws-Anweisung wird beim Definieren einer Methode verwendet, um den Ausnahmetyp zu deklarieren, den die Methode auslöst. Wenn der Ausnahmetyp ausgelöst wird, wird die Methode so deklariert, dass sie alle Ausnahmen auslöst. Mehrere Ausnahmen können durch Kommas getrennt werden. Das Syntaxformat der throws-Anweisung lautet:

Methodenname löst Ausnahme1, Ausnahme2,..,AusnahmeN-Ausnahmeliste aus. Wenn eine Methode eine Ausnahme aus der Ausnahmeliste auslöst, verarbeitet die Methode keine Ausnahmen dieser Typen und ihrer Unterklassen, sondern wirft sie zur Behandlung an die Methode, die die Methode aufruft. Beispiel:


Nachdem der Anrufer mit dem Schlüsselwort throws eine Ausnahme an den Anrufer ausgelöst hat und dieser die Ausnahme nicht verarbeiten möchte, kann er sie weiterhin nach oben werfen, aber am Ende muss es so sein Seien Sie ein Anrufer, der die Ausnahme behandeln kann.

import java.lang.Exception; 
public class TestException { 
  static void pop() throws NegativeArraySizeException { 
    // 定义方法并抛出NegativeArraySizeException异常 
    int[] arr = new int[-3]; // 创建数组 
  } 
   
  public static void main(String[] args) { // 主方法 
    try { // try语句处理异常信息 
      pop(); // 调用pop()方法 
    } catch (NegativeArraySizeException e) { 
      System.out.println("pop()方法抛出的异常");// 输出异常信息 
    } 
  } 
   
}
Die Pop-Methode behandelt die Ausnahme NegativeArraySizeException nicht, sondern wird von der Hauptfunktion behandelt.

Wirft Regeln zum Auslösen von Ausnahmen aus:

1) Wenn es sich um eine ungeprüfte Ausnahme (ungeprüfte Ausnahme) handelt, also um Error, RuntimeException oder deren Unterklassen, können Sie sie ohne Verwendung des Schlüsselworts throws deklarieren Die auszulösende Ausnahme wird während der Kompilierung weiterhin reibungslos durchlaufen, wird jedoch zur Laufzeit vom System ausgelöst.

2) Alle geprüften Ausnahmen, die die Methode auslösen kann, müssen deklariert werden. Das heißt, wenn eine Methode möglicherweise eine überprüfbare Ausnahme hat, verwenden Sie entweder eine Try-Catch-Anweisung, um sie abzufangen, oder eine Throws-Klausel-Anweisung, um sie auszulösen. Andernfalls wird ein Kompilierungsfehler verursacht

3) Nur wenn Es wird eine Ausnahme ausgelöst. Nur der Aufrufer dieser Methode muss die Ausnahme behandeln oder erneut auslösen. Wenn der Aufrufer der Methode die Ausnahme nicht verarbeiten kann, sollte er sie weiterhin auslösen, anstatt die Ausnahme zu verschlucken.

4) Die aufrufende Methode muss den Behandlungs- und Deklarationsregeln jeder überprüfbaren Ausnahme folgen. Wenn Sie eine Methode überschreiben, können Sie keine andere Ausnahme als die überschriebene Methode deklarieren. Jede deklarierte Ausnahme muss derselben Klasse oder Unterklasse angehören wie die von der überschriebenen Methode deklarierte Ausnahme.

Zum Beispiel:

Die Grundlage für die Beurteilung, ob eine Ausnahme in einer Methode auftreten kann, ist wie folgt:

1) Die Methode enthält eine Throw-Anweisung. Beispielsweise verfügt der Catch-Codeblock der oben genannten method7()-Methode über eine throw-Anweisung.

2) Andere Methoden werden aufgerufen und andere Methoden werden deklariert, um mithilfe der throws-Klausel eine Art Ausnahme auszulösen. Beispielsweise ruft die Methode method3() die Methode method1() auf und die Methode method1() gibt an, eine IOException auszulösen. Daher kann in der Methode method3() eine IOException auftreten.

2. Verwenden Sie throw, um Ausnahmen auszulösen.

throw erscheint immer im Funktionskörper und wird verwendet, um eine Ausnahme vom Typ Throwable auszulösen. Das Programm wird unmittelbar nach der throw-Anweisung beendet und die darauf folgenden Anweisungen können nicht ausgeführt werden. Anschließend wird in allen try-Blöcken, die diese enthalten (möglicherweise in der oberen Ebene), von innen nach außen nach einem Try-Block gesucht, der eine passende Catch-Klausel enthält aufrufende Funktion).

Wir wissen, dass Ausnahmen Instanzobjekte der Ausnahmeklasse sind. Wir können Instanzobjekte der Ausnahmeklasse erstellen und sie über die throw-Anweisung auslösen. Das Syntaxformat dieser Anweisung lautet

throw new exceptionname;
. Beispielsweise wird ein Ausnahmeobjekt der IOException-Klasse ausgelöst:

throw new IOException;
It Es ist zu beachten, dass throw nur Instanzobjekte der throwable-Klasse Throwable oder ihrer Unterklassen sein kann. Die folgende Operation ist falsch:

throw new String(“exception”)
Dies liegt daran, dass String keine Unterklasse der Throwable-Klasse ist.

Wenn eine geprüfte Ausnahme ausgelöst wird, sollte auch die Art der Ausnahme, die die Methode auslösen kann, im Methodenheader deklariert werden. Der Aufrufer dieser Methode muss auch prüfen, ob die ausgelöste Ausnahme behandelt werden soll.

Wenn alle Methoden die erhaltenen Ausnahmen Schicht für Schicht auslösen, wird die JVM sie schließlich verarbeiten. Die Verarbeitung ist ebenfalls sehr einfach, nämlich das Drucken der Ausnahmemeldung und der Stapelinformationen. Wenn ein Fehler oder eine RuntimeException ausgelöst wird, kann der Aufrufer der Methode wählen, ob er die Ausnahme behandeln möchte.

Weitere Artikel zum einfachen Verständnis des Auslösens von Ausnahmen in der Java-Programmierung finden Sie auf der chinesischen PHP-Website!

package Test;
import java.lang.Exception;
public class TestException {
  static int quotient(int x, int y) throws MyException { // 定义方法抛出异常
    if (y < 0) { // 判断参数是否小于0
      throw new MyException("除数不能是负数"); // 异常信息
    }
    return x/y; // 返回值
  }
  public static void main(String args[]) { // 主方法
    int a =3;
    int b =0; 
    try { // try语句包含可能发生异常的语句
      int result = quotient(a, b); // 调用方法quotient()
    } catch (MyException e) { // 处理自定义异常
      System.out.println(e.getMessage()); // 输出异常信息
    } catch (ArithmeticException e) { // 处理ArithmeticException异常
      System.out.println("除数不能为0"); // 输出提示信息
    } catch (Exception e) { // 处理其他异常
      System.out.println("程序发生了其他的异常"); // 输出提示信息
    }
  }
   
}
class MyException extends Exception { // 创建自定义异常类
  String message; // 定义String类型变量
  public MyException(String ErrorMessagr) { // 父类方法
    message = ErrorMessagr;
  }
   
  public String getMessage() { // 覆盖getMessage()方法
    return message;
  }
}

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn