1. 예외 구현 및 분류
1. 먼저 예외 클래스의 구조 다이어그램을 살펴보겠습니다.
위 그림은 단순히 예외 클래스 구현 구조 다이어그램을 보여줍니다. 물론, 위 그림은 예외가 전부는 아니며, 사용자는 자신만의 예외 구현을 사용자 정의할 수도 있습니다. 위 그림은 예외 구현을 설명하고 이해하는 데 충분합니다.
Java 관련 무료 동영상 튜토리얼: java 교육 동영상
1. 모든 예외는 모든 예외의 공통 조상인 Throwable에서 상속됩니다.
2. Throwable
에는 Error
와 Exception
이라는 두 개의 하위 클래스가 있습니다. Throwable
有两个子类,Error
和Exception
。
其中Error是错误,对于所有的编译时期的错误以及系统错误都是通过Error抛出的。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,如Java虚拟机运行错误(Virtual MachineError
)、类定义错误(NoClassDefFoundError
)等。
这些错误是不可查的,因为它们在应用程序的控制和处理能力之外,而且绝大多数是程序运行时不允许出现的状况。对于设计合理的应用程序来说,即使确实发生了错误,本质上也不应该试图去处理它所引起的异常状况。在 Java中,错误通过Error的子类描述。
3.Exception
是另外一个非常重要的异常子类。它规定的异常是程序本身可以处理的异常。
异常和错误的区别是,异常是可以被处理的,而错误是没法处理的。
4.Checked Exception
可检查的异常,这是编码时非常常用的,所有checked exception都是需要在代码中处理的。它们的发生是可以预测的,正常的一种情况,可以合理的处理,比如IOException
,或者一些自定义的异常。除了RuntimeException
及其子类以外,都是checked exception。
5.Unchecked Exception
RuntimeException
及其子类都是unchecked exception。比如NPE空指针异常,除数为0的算数异常ArithmeticException
Virtual MachineError
), 클래스 정의 오류() 등 가상 머신이 애플리케이션을 실행하려고 할 때 발생합니다. >NoClassDefFoundError
)잠깐만요. 이러한 오류는 응용 프로그램의 제어 및 처리 기능 범위를 벗어나기 때문에 확인할 수 없으며, 대부분은 프로그램 실행 시 발생이 허용되지 않는 조건입니다. 잘 설계된 애플리케이션의 경우 오류가 발생하더라도 이로 인해 발생한 예외 조건을 처리하려는 시도가 있어서는 안 됩니다. Java에서 오류는 Error의 하위 클래스를 통해 설명됩니다.
3.Exception
은 또 다른 매우 중요한 예외 하위 클래스입니다. 그것이 지정하는 예외는 프로그램 자체가 처리할 수 있는 예외입니다. 예외와 오류의 차이점은 예외는 처리할 수 있지만 오류는 처리할 수 없다는 것입니다. 4.Checked Exception
코딩할 때 매우 흔히 사용되는 Checked Exception은 모든 Checked Exception을 코드에서 처리해야 합니다. 이는 정상적인 상황이며 IOException
또는 일부 사용자 정의 예외와 같이 합리적으로 처리될 수 있습니다. RuntimeException
및 해당 하위 클래스를 제외하고 모두 확인된 예외입니다. 5.검사되지 않은 예외
RuntimeException
및 해당 하위 클래스는 모두 검사되지 않은 예외입니다. 예를 들어 NPE 널 포인터 예외, 제수가 0인 경우의 산술 예외 ArithmeticException
등이 있습니다. 이러한 종류의 예외는 런타임 시 발생하며 사전에 포착하여 처리할 수 없습니다. 오류 역시 확인되지 않은 예외이므로 미리 처리할 수 없습니다.
2. 예외 처리
코드에서의 예외 처리는 실제로 확인 가능한 예외를 처리하는 것입니다. 1. try...catch 문 블록을 통해 처리됨:try { // 程序代码 }catch(ExceptionName e1) { //Catch 块 }Catch 문에는 catch할 예외 유형에 대한 선언이 포함되어 있습니다. 보호된 코드 블록에서 예외가 발생하면 try 다음에 나오는 catch 블록을 확인합니다. 발생한 예외가 catch 블록에 포함되어 있으면 예외가 catch 블록으로 전달되는데, 이는 메서드에 매개변수를 전달하는 것과 같습니다. 🎜🎜2. 또한 특정 위치에서 처리하지 않고 직접 던진 다음, throw/throw를 통해 처리하기 위해 상위 계층으로 이동할 수도 있습니다. 구체적으로 메서드가 확인된 예외를 catch하지 않으면 해당 메서드는 선언하려면 throws 키워드를 사용해야 합니다. 🎜🎜throws 키워드는 메소드 서명 끝에 배치됩니다. 새로 인스턴스화되었거나 방금 포착된 예외를 발생시키기 위해 throw 키워드를 사용할 수도 있습니다. 🎜🎜다음 메서드 선언에서는 RemoteException 예외가 발생합니다. 🎜
import java.io.*; public class className { public void deposit(double amount) throws RemoteException { // Method implementation throw new RemoteException(); } //Remainder of class definition }🎜3. finally 키워드 🎜🎜finally 키워드는 try 코드 블록 다음에 실행되는 코드 블록을 만드는 데 사용됩니다. 예외 발생 여부에 관계없이 finally 블록의 코드는 항상 실행됩니다. finally 코드 블록에서는 정리 유형과 같은 정리 문을 실행할 수 있습니다. 🎜🎜마지막으로 코드 블록이 catch 코드 블록 끝에 나타나며 구문은 다음과 같습니다. 🎜
try{ // 程序代码 }catch(异常类型1 异常的变量名1){ // 程序代码 }catch(异常类型2 异常的变量名2){ // 程序代码 }finally{ // 程序代码 }🎜추천 Java 관련 기사 및 튜토리얼: 🎜java 입문 프로그램🎜🎜
위 내용은 Java의 예외 유형 및 예외 처리에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!