throws IOException 사용 이유

cutiepazzipozzi·2023년 1월 6일
2

지식스택

목록 보기
9/35

흔히 효율적이라는 BufferedReader를 이용해 코딩 테스트를 풀다보면,

public void main(String[] args) {
	BufferedReader br = new BufferedReader(new InputStreamReader(System.in);
    int n = Integer.parseInt(br.readLine());
}

아무 생각없이 본능적으로 이렇게 작성하다가 오류가 발생한다.
(더 정확히 얘기하면 br.readLine()을 하는 부분에서)
뭔가 하나가 빠졌다.

바로 throws IOException 이다!!

IOException은 checked exception이므로 반드시 예외 처리를 해주는 것이 맞다.

여기서 checked exception, uncheked exception이 무엇인가


두 예외는 개발자들이 만든 app에서 예외가 발생했을 때 (이 말인 즉슨 개발자 선에서 해결할 수 있는 오류라는 것) 사용하며, 두 예외처리의 차이는
runtime exception에 있다.

unchecked는 runtime 예외를 상속하고, checked는 상속하지 않는데, 이는 예외 발생 시 rollback의 유무를 결정한다. 따라서 checked는 예외 발생 시 rollback이 되지 않으므로 명시적으로(try/catch, throws) 예외를 처리해주어야 한다.

(갑자기 든 생각이지만 이 checked exception에 대해서도 정리하면 좋을듯)

아무튼 다시 돌아와서 readLine함수는 한줄씩 읽어 string으로 반환되는 함수로, System.in으로 키보드와 연결된 reader가 이 프로그램에서 인식되지 않을 때 예외를 던진다. 키보드와의 연결을 인식하지 못하는 것은 입력이 없었다는 의미이다.
그러나 단순히 입력을 안했을 때(이때는 null이 아닌 0으로 찍힌다고 한다)의 문제가 아니라 아예 인식이 안될 때 던지는 오류라고 한다!!!

(참고한 링크처럼 나도 함수를 찾아오고 싶은데 아직 안나온다ㅠㅠㅠ 추후에 첨부하겠다!!!)

참고링크!!!

참고링크,, 감사합니다
참고링크2,, 감사합니다

profile
노션에서 자라는 중 (●'◡'●)

0개의 댓글