>  기사  >  Java  >  Java 예외 처리 예제에 대한 자세한 설명

Java 예외 처리 예제에 대한 자세한 설명

Y2J
Y2J원래의
2017-04-27 09:49:241590검색

이 글은 주로 Java 예외 처리에 대한 자세한 소개와 예시를 소개합니다. 이 글은 Java 예외에 대한 지식 수준을 요약한 것입니다. 필요한 친구는

Java 예외 계층 구조

Exception

RuntimeException과 non-RuntimeException의 차이점:

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

Error 클래스와 Exception 클래스는 모두 발생 가능한 클래스입니다.

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

RuntimeException

NullPointException

.lang.NullPointerException은 다음과 같은 이유로 보고됩니다.


1. 문자열 변수가 초기화되지 않았습니다.

2.

NullPointException 코드는 다음과 같습니다.

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();
    }
  }
}

출력:

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

ArrayIndexOutOfBoundsException 예외

참조된 인덱스가 있을 때 배열 첨자 범위를 벗어난 예외 값이 배열의 길이를 초과하면 이 예외가 발생합니다.

ArrayIndexOutOfBoundsException 코드는 다음과 같습니다.

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();
    }
  }
}

출력:

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

ArithmeticException

ArithmeticException은 비정상적인 작업 조건 시 발생합니다. 이 예외가 발생합니다.

ArithmeticException 코드는 다음과 같습니다.

/**
 * 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();
    }
  }
 }

출력:

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

ArrayStoreException

ArithmeticException의 객체를 저장하려고 할 때 객체 배열 시 예외가 발생하는 잘못된 유형입니다.

ArrayStoreException 코드는 다음과 같습니다:

/**
 * 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();
    }
  }
 }

출력:

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

NumberFormatException

문자열이 다음과 같을 때 발생하는 IllegalArgumentException을 상속합니다. 숫자로 변환됩니다.

NumberFormatException 코드는 다음과 같습니다:

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

출력:

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

형식 변환 오류, 일반적으로 강제 유형을 수행할 때 발생 변환 오류.

ClassCastException 코드는 다음과 같습니다:

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

출력:

Exception in thread "main" java.lang.ClassCastException: java.lang.Object cannot be cast to java.lang.Integer
  at test.ExceptionTest.main(ExceptionTest.java:5)

위 내용은 Java 예외 처리 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.