Study/쌍용

자바 예외 처리(2)

leecom116 2022. 7. 29. 09:34

BufferedReader
버퍼를 이용하여 문자열(문자)를 입력 받는 클래스로 입력 속도가 향상된 클래스
InputStreamReader 
바이트 스트림을 문자 스트림으로 변경시켜줌

// br.readLine 문자열
// br.read     문자

 

IOException :입출력에 문제가 발생할 때 발생하는 예외(checked exception)
checked exception은 반드시 예외처리를 해야 하며 예외를 처리하지 않으면 컴오류 발생
checked exception은 메서드를 만들때 throws 한 예외

 

NumberFormatException : 숫자로 변환할 수 없는 문자열을 숫자로 변환할 때 발생
unchecked exception으로 반드시 catch하지 않아도 되지만
catch하지 않은 상태에서 NumberFormatException이 발생하면 프로그램은 종료됨

 

ArithmeticException(unchecked exception) : 0으로 나누는 경우
e.getMessage()); // 간단한 메시지 출력
e.toString()); // 예외클래스명 및 간단한 메시지 출력
e.printStackTrace(); // 에러 메시지를 표준출력장치로 출력 (자세한 예외 메시지)
Exception e // 모든 예외를 catch. 예외를 상황별로 분리할 수 없다.

 

 ArrayIndexOutOfBoundsException(unchecked exception) : 배열의 첨자가 벗어난 경우 발생하는 예외

 


finally 블럭
catch 하지 않는 예외가 발생해도 실행
catch 블럭이 없어도 finally만 사용 가능.
일반적으로 사용한 resource를 close할 때 사용 ex) sc.close();

try ~ with ~ resource : 자동으로 resource를 close() 함

throws Exception { // 이 메서드를 호출하는 곳에서 예외를 catch하도록 설정

throws : 메서드를 호출하는 곳에서 예외를 처리하도록 설정
main() 메서드에서 예외를 throws 할 경우
예외가 발생하면 프로그램은 비정상 종료되므로 main()에서는 throws 하지 않는다.

 

RuntimeException은 unchecked 예외로 반드시 catch 할 필요는 없다.

unchecked는 throws를 안해도 되고 checked는 throws를 무조건 해야 한다.


// 사용자 정의 예외 클래스
// checked exception : Exception을 상속 받음
// unchecked exception : RuntimeException을 상속 받음