Java/Java

(JAVA) Exceptions in Java (2) - checked, unchecked

주누 2020. 2. 4. 12:00

Checked Exception

Checked Exception은 컴파일 시점에 체크되는 예외이다. 만약 메서드 안에 몇몇 코드가 Checked Exception을 던진다면

 

해당 메서드는 반드시 예외를 처리하거나 throws 키워드를 사용하여 예외임을 명시해야한다.

 

특정 위치의 파일을 읽어와서 세 줄을 출려하는 프로그램

import java.io.*; 
  
class Main { 
    public static void main(String[] args) { 
        FileReader file = new FileReader("C:\\test\\a.txt"); 
        BufferedReader fileInput = new BufferedReader(file); 
          
        // Print first 3 lines of file "C:\test\a.txt" 
        for (int counter = 0; counter < 3; counter++)  
            System.out.println(fileInput.readLine()); 
          
        fileInput.close(); 
    } 
} 

위의 코드는 컴파일 할 수 없다.

왜냐면 FileReader() 가 checked Exception을 던지기 때문이다. (FileNotFoundException)

또한 readLine(), close() 또한 IOException을 던진다.

 

실행결과

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - 
unreported exception java.io.FileNotFoundException; must be caught or declared to be 
thrown
    at Main.main(Main.java:5)

 

개선 코드

import java.io.*; 
  
class Main { 
    public static void main(String[] args) throws IOException { 
        FileReader file = new FileReader("C:\\test\\a.txt"); 
        BufferedReader fileInput = new BufferedReader(file); 
          
        // Print first 3 lines of file "C:\test\a.txt" 
        for (int counter = 0; counter < 3; counter++)  
            System.out.println(fileInput.readLine()); 
          
        fileInput.close(); 
    } 
} 

FileNotFoundException은 IOException의 하위 클래스 이다. 그러므로 우리는 IOException을 던지면 된다.


Unchecked Exception

Unchecked는 컴파일 시점에 체크할 수 없는 예외이다. c++에서는 모든 예외가 unchecked exception이므로 컴파일러가 특정 예외를 처리하라고 강요하지 않는다. 단지 개발자에게 해당 예외를 커스텀하도록 행위를 위임한다.

 

 

예시코드

class Main { 
   public static void main(String args[]) { 
      int x = 0; 
      int y = 10; 
      int z = y/x; 
  } 
} 

실행 결과

Exception in thread "main" java.lang.ArithmeticException: / by zero
    at Main.main(Main.java:5)
Java Result: 1

References

https://www.geeksforgeeks.org/built-exceptions-java-examples/

 

Built-in Exceptions in Java with examples - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org