컴파일 에러(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 |