보고되지 않은 예외를 포착하거나 throw하도록 선언해야 함
Java는 객체 지향적이고 강력한 유형의 컴파일된 언어이며 상속 및 다형성과 같은 프로그래밍의 다양한 측면을 활용하는 클래스 개념을 가지고 있습니다. 고도로 중첩된 함수로 인한 예외 처리에 대한 지원도 좋습니다.
이 기사에서는 Java에서 보고되지 않은 예외를 포착하거나 발생하도록 선언해야 합니다
컴파일 시간 오류를 보여줍니다.
Java 오류 보고되지 않은 예외를 포착하거나 발생하도록 선언해야 함
다음 코드 샘플을 고려하십시오.
public class MyApp {
public static void main(String[] args) {
System.out.println("Hello World");
System.out.println(divide(3, 0));
}
public static int divide(int a, int b) throws Exception {
int c = a / b;
return c;
}
}
javac MyApp.java
를 사용하여 위의 코드 샘플을 컴파일하면 다음과 같은 오류가 발생합니다.
MyApp.java:7: error: unreported exception Exception; must be caught or declared to be thrown
System.out.println(divide(3,0));
^
1 error
그래서 여기서 무슨 일이 일어나고 있습니까?
함수 divide(int a, int b)
는 호출하는 함수의 어디에서도 포착되거나 처리되지 않는 예외
를 발생시킵니다. 이 경우 main(String[] args)
입니다. 예외를 처리하거나 호출 함수에서 동일한 예외를 throw하도록 하여 해결할 수 있습니다.
Java에서 호출 함수의 예외 처리
그래서 마지막 섹션에서 이것은 오류를 해결하기 위한 접근 방식 중 하나였습니다. 위에서 논의한 코드 샘플을 고려하여 예를 들어 이해해 봅시다.
public class MyApp {
public static void main(String[] args) {
System.out.println("Hello World");
try {
System.out.println(divide(3, 0));
} catch (Exception e) {
System.out.println("Division by zero !!!");
}
}
public static int divide(int a, int b) throws Exception {
int c = a / b;
return c;
}
}
이제 코드를 컴파일하려고 하면 성공적으로 컴파일되고 코드를 실행하면 다음과 같은 출력이 표시됩니다.
Hello World
Division by zero !!!
따라서 예외는 이제 main
메서드에서 처리되고 catch
블록의 print
문이 실행됩니다.
호출 함수가 Java에서 동일한 예외를 발생하도록 만들기
따라서 다른 접근 방식은 호출 함수도 동일한 예외를 throw하도록 만드는 것입니다. 어떻게 달성할 수 있는지 예를 들어 보겠습니다.
public class MyApp {
public static void main(String[] args) throws Exception {
System.out.println("Hello World");
try {
performOperation();
} catch (Exception e) {
System.out.println("Division by zero!!");
}
}
public static void performOperation() throws Exception {
divide(3, 0);
}
public static int divide(int a, int b) throws Exception {
int c = a / b;
return c;
}
}
그래서 우리는 이전 예제를 가져와 사이에 performOperation()
이라는 추가 함수를 추가했습니다. 우리는 performOperation()
함수가 divide(int a, int b)
와 동일한 예외
를 발생시키도록 했습니다. 따라서 성공적으로 컴파일되고 동일한 출력을 얻을 수 있습니다.