Throwable은 두 가지 유형으로 나눌 수 있습니다:
Error
Exception:
런타임 예외(확인되지 않은 예외)
비런타임 예외( 확인된 예외)
Error: Error는 프로그램이 처리할 수 없는 오류입니다. OutOfMemoryError, ThreadDeath 등 jvm에서 발생합니다. 이러한 예외가 발생하면 jvm은 프로그램 실행을 종료하도록 선택합니다
예외: 프로그램 자체에서 처리할 수 있는 예외입니다
런타임 예외: 모두 RuntimeException 클래스 및 하위 클래스입니다(예: NullPointerException(널 포인터), IndexOutOfBoundException(범위를 벗어난 배열)). 캡처 또는 처리 또는 처리되지 않음
런타임 예외: (확인된 예외) RuntimeException을 제외하고 해당 유형은 프로그램 구문의 관점에서 Exception 클래스에 속하며 처리되지 않는 경우에는 해당 예외를 처리해야 합니다. IOException, SQIException
try, catch 및 finally 세 가지 문을 단독으로 사용할 수 없다는 문제가 있습니다. . 조합 방법: try…catch, try…catch…finally, try...finally. 여기서는 하나 이상의 catch가 있을 수 있으며 세 개의 문에 최대 하나의 finally 문만 있을 수 있습니다. 블록은 코드 블록이며 서로 독립적으로 액세스할 수 없습니다. 세 블록에 액세스하려면 이 블록 외부에 변수를 정의하면 됩니다.
캐치 블록이 여러 개인 경우 예외 클래스는 최대 1개입니다. 일치하고 catch 블록 코드가 실행되며 다른 catch 블록은 실행되지 않습니다. 일치 순서는 위에서 아래로 최대 하나의 예외 클래스만 일치하므로 예외 클래스가 실행될 수 없습니다. catch로 캡처한 예외 클래스는 반복할 수 없으며 하위 클래스 예외를 먼저 캡처한 다음 상위 클래스 예외를 캡처해야 합니다. .마지막으로 프로그램 상태의 통합 관리를 보장하기 위해 finally
package com.exception; public class Test { public static void main(String[] args) { int[] a=new int[5]; try { for (int i = 0; i <10 ; i++) { a[i]=i; } //空指针 }catch (ArrayIndexOutOfBoundsException e){ //弹出出错的地方 System.out.println("1"); e.printStackTrace(); //访问异常,数组越界 }catch (NullPointerException e){ System.out.println("2"); e.printStackTrace(); //无论有错与否,finally最终执行 } finally { System.out.println("都能执行"); } System.out.println("---------------"); } }
3에서 리소스가 닫히고 삭제됩니다. final의 기능: 키워드 상수를 정의하는 데 사용됨
finally: 예외 상황에서 항상 실행될 수 있는 코드 블록
finalize(): 가비지 수집, 이 메서드는 시스템 호출이므로 프로그래머가 수동으로
메서드를 정의할 때 throws 키워드 문을 사용하여 메서드가 예외를 처리하지 않고 예외를 처리하도록 메서드 호출자에게 맡김을 나타낼 수 있습니다.
메서드를 정의할 때. , throws 키워드는 프로그래머가 원하는 대로 사용할 수 있습니다. 사용하는 경우 해당 메서드가 예외를 처리하지 않는다는 의미입니다.
주 당사자(main)도 throws 키워드를 사용하면 이는 기본 메소드가 예외를 처리하지 않고 최종적으로 이를 jvm에 맡긴다는 것을 의미합니다. jvm은 프로그램을 종료하여 예외를 처리합니다
참고:
5 throw와 throw의 차이점:
메서드 선언에 사용 그 뒤에는 예외 클래스 이름
이 옵니다. 그 뒤에는 여러 예외 클래스가 쉼표
로 구분되어 있을 수 있습니다. 이는 예외가 발생하고 메서드 호출자를 나타냅니다. 처리
package com.test; public class Throw { //throws Exception 代表该方法出现异常时不做处理 public void deposit(int num1,int num2) throws Exception { // RuntimeException()是运行时异常最大的父类 int sum; if(num2==0){ throw new RuntimeException("可以自定义一个异常抛出:除数不能为0"); }else{ sum=num1/num2; } } }
위 내용은 Java 예외 예외 인스턴스를 분석하는 방법 및 단계의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!