Heim  >  Artikel  >  Java  >  Detaillierte Erläuterung der Beispiele für die Java-Ausnahmebehandlung

Detaillierte Erläuterung der Beispiele für die Java-Ausnahmebehandlung

Y2J
Y2JOriginal
2017-04-27 09:49:241608Durchsuche

Dieser Artikel stellt hauptsächlich die detaillierte Einführung und Beispiele der Java-Ausnahmebehandlung vor. Dieser Artikel fasst den Kenntnisstand von Java-Ausnahmen zusammen.

Java-Ausnahmehierarchie

Ausnahme

Der Unterschied zwischen RuntimeException und Non-RuntimeException:

非RuntimeException(检查异常):在程序中必须使用try…catch进行处理,否则程序无法编译。 
RuntimeException:可以不使用try…catch进行处理,但是如果有异常产生,则异常将由JVM进行处理。
比如:我们从来没有人去处理过NullPointerException异常,它就是运行时异常,并且这种异常还是最常见的异常之一。
出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,
如果是多线程就由Thread.run()抛出,如果是单线程就被main()抛出。抛出之后,如果是线程,这个线程也就退出了。
如果是主程序抛出的异常,那么这整个程序也就退出了。

Die übergeordneten Klassen Die Fehlerklasse und die Ausnahmeklasse sind beide auslösbare Klassen. Der Unterschied zwischen ihnen ist:

Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。
对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。 
Exception类表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,
使程序恢复运行,而不应该随意终止异常。

RuntimeException

NullPointException

Im Allgemeinen , Java.lang.NullPointerException wird aus folgenden Gründen gemeldet:

1. Die Zeichenfolgenvariable ist nicht initialisiert;

NullPointException-Code lautet wie folgt:

package TestNullPointException;
public class TestNullPointException {
  public static void main (String[] args) {
    String str = null;
    try {
      if (str.equals(null)) {
        System.out.println("true");
      } else {
        System.out.println("false");
      }
    } catch (NullPointException e) {
      e.printStackTrace();
    }
  }
}
Ausgabe:

java.lang.NullPointerException
  at TestNullPointException.TestNullPointException.main(TestNullPointException.java:6)

ArrayIndexOutOfBoundsException-Ausnahme

Array-Index-Ausnahme außerhalb der Grenzen , wenn referenziert wird. Diese Ausnahme tritt auf, wenn der Indexwert von die Länge des Arrays überschreitet.

ArrayIndexOutOfBoundsException Der Code lautet wie folgt:

package TestArrayIndexOutOfBoundsException;
public class TestArrayIndexOutOfBoundsException {
  public static void main (String[] args) {
    Integer[] array = new Integer[10];
    try {
      Integer temp = array[10];
    } catch (ArrayIndexOutOfBoundsException e) {
      e.printStackTrace();
    }
  }
}
Ausgabe:

java.lang.ArrayIndexOutOfBoundsException: 10
  at TestArrayIndexOutOfBoundsException.TestArrayIndexOutOfBoundsException.main(TestArrayIndexOutOfBoundsException.java:6)

ArithmeticException

ArithmeticException ist die Operation Bedingung, in der eine Ausnahme auftritt, wird diese Ausnahme ausgelöst.

ArithmeticException-Code lautet wie folgt:

/**
 * ArithmeticException
 */

 packet TestArithmeticException;
 public class TestArithmeticException {
  public static void main(String[] args) {
    Integer temp = 1;
    try {
      System.out.println(temp/0);
    } catch (ArithmeticException e) {
      e.printStackTrace();
    }
  }
 }
Ausgabe:

java.lang.ArithmeticException: / by zero
  at TestArithmeticException.TestArithmeticException.main(TestArithmeticException.java:6)

ArrayStoreException

Wenn Sie versuchen, zu konvertieren der Fehlertyp Ausnahme, der ausgelöst wird, wenn ein Objekt in einem Objektarray gespeichert wird.

ArrayStoreException-Code lautet wie folgt:

/**
 * ArrayStoreException
 */

 packet TestArrayStoreException;
 public class TestArrayStoreException {
  public static void main(String[] args) {
    Object array = new Integer[10];
    try {
      array[0] = "123";
    } catch (ArrayStoreException e) {
      e.printStackTrace();
    }
  }
 }
Ausgabe:

Exception in thread "main" java.lang.ArrayStoreException: java.lang.String
  at TestArrayStoreException.TestArrayStoreException.main(TestArrayStoreException.java:6)

NumberFormatException

erbt IllegalArgumentException und die Die Zeichenfolge wird in „Erscheint“ konvertiert, wenn Zahlen angezeigt werden.

NumberFormatException-Code lautet wie folgt:

/**
 * NumberFormatException
 */
package test;
public class ExceptionTest {
   public static void main(String[] args) { 
      String s = "q12";
      Integer i = Integer.parseInt(s);
   }
 }
Ausgabe:

Exception in thread "main" java.lang.NumberFormatException: For input string: "q12"
  at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
  at java.lang.Integer.parseInt(Integer.java:580)
  at java.lang.Integer.parseInt(Integer.java:615)
  at test.ExceptionTest.main(ExceptionTest.java:8)

ClassCastException

Typkonvertierungsfehler, normalerweise durchgeführt. Bei der erzwungenen Typkonvertierung ist ein Fehler aufgetreten.

Der ClassCastException-Code lautet wie folgt:

/**
 * ClassCastException 父类赋值给子类,向下转型
 */
package test;
public class ExceptionTest {
   public static void main(String[] args) { 
     Object obj=new Object();
     Integer s=(Integer)obj;
   }
 }
Ausgabe:

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Beispiele für die Java-Ausnahmebehandlung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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