오늘이라도
혼자 공부하는 자바, Ch. 10-1 예외 클래스 본문
https://github.com/upcake/Class_Examples
교육 중에 작성한 예제들은 깃허브에 올려두고 있습니다.
1. 예외와 예외 클래스
- 예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말한다.
- 자바는 예외가 발생할 가능성이 높은 코드를 컴파일할 때 예외 처리 유무를 확인한다.
- 일반 예외 : 확인 예외라고도 하며 예외 처리 코드가 없다면 컴파일 오류가 발생한다.
- 실행 예외 : 미확인 예외라고도 하며 실행을 해야 예외가 발생한다.
2. 실행 예외
- 자바 컴파일러가 실행 예외를 체크하지 않기 때문에 개밪라의 경험에 의해서 예외 처리 코드를 작성해야 한다.
(1) NullPointerException
- 가장 빈번하게 발생하는 실행 예외로, 객체가 없는 상태에서 객체를 사용하려 할 때 예외가 발생한다.
- 6라인에서 data 변수는 null 값을 가지기 때문에 String 객체를 참조하고 있지 않다.
- 하지만 7라인에서 String 객체의 toString() 메소드를 호출하고 있다. 여기서 NullPointerException이 발생한다.
(2) ArrayIndexOutOfBoundsException
- 배열에서 인덱스 범위를 초과할 경우 발생하는 실행 예외이다.
- 2개의 실행 매개값을 주지 않았기 때문에 args[0], args[1]과 같이 인덱스를 사용할 수 없다.
- 따라서, 5라인에서 ArrayIndexOutOfBoundsException이 발생한다.
- 예제 02를 위와 같이 수정하면 예외가 발생하지 않는 좋은 프로그램이 된다.
- 배열값을 읽기 전에 배열의 길이를 먼저 조사한 뒤, 실행 매개값이 없거나 부족할 경우 조건문을 이용해서 사용자에게 알려준다.
(3) NumberFormatException
- Wrapper 클래스를 사용해서 문자열을 숫자로 변환할 때, 숫자로 변환될 수 없는 문자가 포함되어 있다면 예외를 발생시킨다.
- data1 변수의 문자열 "100"은 숫자로 변환이 가능하기 때문에 8라인이 정상적으로 실행된다.
- data2 변수의 문자열 "a100"은 숫자로 변환할 수 없기 때문에 9라인에서 예외가 발생한다.
(4) ClassCastException
- 타입 변환(Casting)은 상위 클래스와 하위 클래스 간에 발생하고 구현 클래스와 인터페이스 간에도 발생한다.
- 이러한 관계가 아니라면 클래스는 다른 타입으로 변환할 수 없기 때문에 ClassCastException이 발생한다.
- 9라인에서 Cat 객체를 매개값으로 주어서 Dog 타입으로 변환할 수 없다.
- 따라서 14라인에서 ClassCastException이 발생한다.
'취업성공패키지 SW 개발자 교육 > Java' 카테고리의 다른 글
22. 객체지향 ② : DAO, DTO 활용 (0) | 2020.03.23 |
---|---|
혼자 공부하는 자바, Ch. 10-2 예외 처리 (0) | 2020.03.18 |
21. 알고리즘 ② : 오름차순, 내림차순 / 객체지향 ① (0) | 2020.03.18 |
혼자 공부하는 자바, Ch. 05-3 열거 타입 (0) | 2020.03.17 |
20. 알고리즘 ① : 합계, 개수, 최댓값, 최솟값, 순차검색, 이진검색 (0) | 2020.03.17 |