java
이 자습서에서는 예제를 통해 예외 처리를 위해 throw 및 throw 키워드를 사용하는 방법을 배웁니다.
Java에서 예외는 두 가지 유형으로 분류될 수 있습니다.
ArithmeticException
, NullPointerException
, ArrayIndexOutOfBoundsException
, Error
아래의 예외 수업 등IOException
, InterruptedException
등확인된 예외와 확인되지 않은 예외에 대한 자세한 내용은 Java 예외를 참조하세요.
일반적으로 확인되지 않은 예외를 처리할 필요가 없습니다. 프로그래밍 오류로 인해 확인되지 않은 예외가 발생하기 때문입니다. 그리고 처리하는 대신 수정하는 것이 좋습니다.
이 자습서는 이제 throw
를 사용하여 확인된 예외를 처리하는 방법에 중점을 둡니다. 및 throws
.
throws
를 사용합니다. 메소드 선언에서 키워드를 사용하여 그 안에서 발생할 수 있는 예외 유형을 선언합니다.
구문은 다음과 같습니다.
accessModifier returnType methodName() throws ExceptionType1, ExceptionType2 … {
// code
}
위의 구문에서 볼 수 있듯이 throws
를 사용할 수 있습니다. 여러 예외를 선언합니다.
import java.io.*;
class Main {
public static void findFile() throws IOException {
// code that may produce IOException
File newFile=new File("test.txt");
FileInputStream stream=new FileInputStream(newFile);
}
public static void main(String[] args) {
try{
findFile();
} catch(IOException e){
System.out.println(e);
}
}
}
출력
java.io.FileNotFoundException: test.txt (No such file or directory)
이 프로그램을 실행할 때 test.txt
파일이 존재하지 않음, FileInputStream
FileNotFoundException
발생 IOException
확장 수업.
메소드가 예외를 처리하지 않는 경우 메소드 내에서 발생할 수 있는 예외 유형을 throws
에 지정해야 합니다. 호출 스택의 상위 메서드가 해당 메서드를 처리하거나 throws
를 사용하여 지정할 수 있도록 절 키워드 자체.
findFile()
메소드는 IOException
던질 수 있습니다. main()
메소드는 이 메소드를 호출하고 예외가 발생하면 처리합니다.
throws
를 사용하여 여러 예외를 발생시키는 방법은 다음과 같습니다. 키워드.
import java.io.*;
class Main {
public static void findFile() throws NullPointerException, IOException, InvalidClassException {
// code that may produce NullPointerException
… … …
// code that may produce IOException
… … …
// code that may produce InvalidClassException
… … …
}
public static void main(String[] args) {
try{
findFile();
} catch(IOException e1){
System.out.println(e1.getMessage());
} catch(InvalidClassException e2){
System.out.println(e2.getMessage());
}
}
}
여기서 findFile()
메서드는 NullPointerException
를 throw할 수 있음을 지정합니다. , IOException
및 InvalidClassException
throws
조항.
NullPointerException
은 처리하지 않았습니다. . 확인되지 않은 예외이기 때문입니다. throws
에 지정할 필요는 없습니다. 조항 및 처리.
예외를 일으킬 수 있는 몇 가지 방법이 있을 수 있습니다. try...catch
작성 각 방법에 대해 지루하고 코드가 길어지고 가독성이 떨어집니다.
throws
현재 메서드에서 catch하고 싶지 않은 예외(처리해야 하는 예외)를 선택한 경우에도 유용합니다.
throw
키워드는 단일 예외를 명시적으로 발생시키는 데 사용됩니다.
예외가 발생하면 프로그램 실행 흐름이 try
catch
차단 차단하다. throw
를 사용합니다. 메소드 내의 키워드.
구문은 다음과 같습니다.
throw throwableObject;
던질 수 있는 객체는 Throwable
클래스의 인스턴스입니다. 또는 Throwable
의 하위 클래스 수업.
class Main {
public static void divideByZero() {
throw new ArithmeticException("Trying to divide by 0");
}
public static void main(String[] args) {
divideByZero();
}
}
출력
Exception in thread "main" java.lang.ArithmeticException: Trying to divide by 0 at Main.divideByZero(Main.java:3) at Main.main(Main.java:7) exit status 1
이 예에서는 명시적으로 ArithmeticException.
참고: ArithmeticException
확인되지 않은 예외입니다. 일반적으로 확인되지 않은 예외를 처리할 필요가 없습니다.
import java.io.*;
class Main {
public static void findFile() throws IOException {
throw new IOException("File not found");
}
public static void main(String[] args) {
try {
findFile();
System.out.println("Rest of code in try block");
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
출력
File not found
findFile()
메소드에서 IOException
이 발생합니다. 생성자에게 전달한 메시지와 함께.
확인된 예외이므로 throws
에 지정해야 합니다. 조항.
이 findFile()
을 호출하는 메소드 메서드는 이 예외를 처리하거나 throws
을 사용하여 지정해야 합니다. 키워드 자체.
main
에서 이 예외를 처리했습니다. ()
방법. try
에서 프로그램 실행 전송의 흐름 catch
차단 예외가 발생하면 차단됩니다. 따라서 try
의 나머지 코드는 블록을 건너뛰고 catch
의 문 블록이 실행됩니다.
java
예외(또는 예외적인 이벤트)는 프로그램 실행 중에 발생하는 문제입니다. 예외가 발생한 경우 발생하면 프로그램의 정상적인 흐름이 중단되고 프로그램/응용 프로그램이 비정상적으로 종료되므로 권장하지 않으므로 이러한 예외를 처리해야 합니다. 예외는 여러 가지 이유로 발생할 수 있습니다. 다음은 예외가 발생하는 몇 가지 시나리오입니다. 사용자가 잘못된 데이터를 입력했습니다. 열어야 할 파일을 찾을 수 없습니다. 통신 도중 네트워크 연결이 끊겼거나 JVM의 메모리가 부족합니다. 이러한 예외 중 일부는 사용자 오류로 인해
자바 8 질문 및 답변 다양한 인증 시험을 준비하는 학생과 전문가를 돕기 위해 특별히 고안되었습니다. 및 취업 면접 . 이 섹션은 인터뷰 질문 및 객관식 질문(MCQ)의 유용한 모음과 적절한 설명과 함께 답변을 제공합니다. SN 질문/답변 유형 1 자바 8 인터뷰 질문 이 섹션에서는 정답을 찾기 전에 먼저 답을 찾아볼 수 있도록 상자에 숨겨진 Java 8 인터뷰 질문 모음을 제공합니다. 2 자바 8 온라인 퀴즈 이 섹션은 정답 및 설명과 함께 한 페이지에 Java 8 MCQ(객관식 질문)의 훌륭한 모음을 제공합니다. 올바른