Java

[Java]예외처리 - part1. Basic

MoZZANG 2022. 3. 21. 20:58
컴파일 에러(Checked Exception)
  • Complie시 발생하는 에러
  • Syntax(문법)오류, IOException(예외 클래스), SQLException(예외클래스)등
  • Complie이 안되면 실행이 안된다.
  • 컴파일 에러(외부 자원 사용시 발생하는 컴파일에러:IOException, SQLException)는 던지거나(throws) 직접처리(try~catch) 할 수 있다.
  • 단 Syntax오류는 직접 수정해야 한다.

 

방법1) throws로 main method로 던지기

▲ throws한다는 것은 해당위치에서의 예외처리를 다른쪽으로 미뤄버린다는 것이다.

 

 

방법2) try~catch로 직접 예외처리 하기

▲try~catch는 예외처리를 남에게 미루지 않고 자신이 직접 처리하는 것이다.

 

 

 

 

 

 

런타임 에러(UnChecked Exception)
  • 컴파일시에는 체크가 안된다. 실행시에만 발생되는 에러이다
  • RuntimeException계열 (NullPointerException, ArithmeticException, ArrayIndexOutOfBoundsException등)
  • main 메소드에서는 throws해도 오류가 발생한다. 즉, 직접처리(try~catch)를 해야한다.
  • 예외 발생시 JVM은 해당 예외클래스를 인스턴스화 해서 예외 객체를 프로그램쪽에 전달한다.

 

 

1 )ArrayIndexOutOfBoundsException

 

 

 

2) NumberFormatException

▲ 숫자형식의 문자열을 입력해야 하는데 숫자형식이 아닌 문자열을 입력하면 나는 런타임오류이다.

    catch안에 InputMismatchException(변수의 타입과 입력값의 타입이 다를때)과 NumberFormatException을 or로 묶어서 조건을 주었다. 즉InputMismatchException과 NumberFormatException 둘 중 하나의 오류가 발생하면 catch안의 코드를 실행하는 것이다.

 

 

 

 

3) NullPointerException

 

▲today를 선언만 해주었을 뿐 초기화를 해준적이 없기때문에 값은 null일 것이다. 따라서 NullPointerException이 발생한다.

 

▲ 빈문자열과 null은 다른 것이다. 구분이 필요하다

 

 

 

 

4) ArithmethicException

▲ 값을 0으로 나눌 때 발생하는 에러이다. 

 

예외처리 시 메세지 출력 방법에 몇가지가 있다.

1. 개발이 끝나고 사용하는 사용자 즉, 개발자가 정한 메세지를 출력할 수 있고,

 

2. 예외 클래스의 인스턴스변수를 이용하여 "예외클래스 : 예외메시지" 형태로 출력할 수도 있으며

 

3. getMessage()를 이용하여 "예외메세지"만을 출력할 수도 있고

 

4. 마지막으로 개발 시 주로 사용하는 printStackTrace()메소드를 이용해서 아래와 같이 메세지를 출력할 수도 있따.

 

 

 

 

 

'Java' 카테고리의 다른 글

[Java]예외처리 - part3. throws  (0) 2022.03.21
[Java]예외처리 - part2. Catch절  (0) 2022.03.21
[Java]Map계열 - Hashtable  (0) 2022.03.19
[Java]Map계열 - HashMap  (0) 2022.03.18
[Java]배열과 List컬렉션 객체 정렬하기  (0) 2022.03.17