제주 여행과 첫 하프 마라톤이었던 대구 마라톤이 끝났다.
공식적 6주차는 이러한 사정으로 놓쳤지만, 마무리는 지어야지
나 홀로 6주차 시작!
예외
사용자의 잘못된 조작 | 개발자의 잘못된 코딩으로 발생하는 프로그램 오류. 예외 발생 시 프로그램 종료됨.
하지만, 예외처리시 정상 실행 상태 유지 가능
예외 종류는 일반 예외와 실행 예외
컴파일러 체크 예외로 컴파일 과정에서 예외 처리 코드 유무를 검사 O
예외 처리 코드가 없을 때 컴파일 오류 발생
컴파일러 넌 체크 예외로 컴파일 과정에서 예외 처리 코드 유무 검사 X
자바에서 예외를 클래스로 관리
실행 도중 예외 발생 시 해당 예외 클래스로 객체 생성
java.lang.Exception
클래스를 상속받음.RuntimeException
클래스와 상속 관계에서 하위 클래스에 속한다. 자바 컴파일러가 체크 X, 개발자가 직접 실행 예외에 대한 예외 처리 코드 작성 필요.
자주 발생하는 실행 예외의 발생 시점과 오류 메시지는 꼭 알아두기
가장 빈번하게 발생하는 실행 예외
객체 참조가 없는 상태(null값을 갖는 참조 변수)로 객체 접근 연산자(도트) 사용 시 발생.
배열에서 인덱스 범위 초과 시 발생
2개의 실행 매개값이 없어서 args[0]과 args[1]을 사용할 수 없음.
-> 매개값 입력 시 예외 발생 X
[Run]
- [Run Configurations]
메뉴에서 [Arguments]
에 매개값 입력 가능
배열 길이가 2이면 매개값 출력, 아니면 "두 개의 실행 매개값이 필요합니다."를 출력
[Run Configurations]
메뉴에서 매개값 입력 시 결과
숫자로 변환될 수 없는 문자가 매개값에 포함되어 있을 때 발생
(문자->숫자 변환은 11장에서 설명)
잘못된 타입 변환(casting)시 발생(ex. 대입된 객체가 아닌 다른 클래스 타입으로 타입 변환)
올바른 타입 변환 관계
ClassCastException을 발생 시키지 않으려면 instanceof 연산자로 타입 변환 전에 변환이 가능한지 확인
Animal animal = new Dog();
if(animal instanceof Dog) {
Dog dog = (Dog) animal;
} else if(animal instanceof Cat) {
Cat cat = (Cat) animal;
}
10라인에서 Cat객체를 매개값으로 주어서 Dog 타입으로 변환 X