[혼공자][week6] Day19 예외 클래스

Ida·2025년 2월 25일
0

혼공자

목록 보기
20/20

제주 여행과 첫 하프 마라톤이었던 대구 마라톤이 끝났다.
공식적 6주차는 이러한 사정으로 놓쳤지만, 마무리는 지어야지
나 홀로 6주차 시작!

10-01 예외 클래스

예외
사용자의 잘못된 조작 | 개발자의 잘못된 코딩으로 발생하는 프로그램 오류. 예외 발생 시 프로그램 종료됨.
하지만, 예외처리시 정상 실행 상태 유지 가능

1. 예외와 예외 클래스

예외 종류는 일반 예외실행 예외

일반 예외

컴파일러 체크 예외로 컴파일 과정에서 예외 처리 코드 유무를 검사 O
예외 처리 코드가 없을 때 컴파일 오류 발생

실행 예외

컴파일러 넌 체크 예외로 컴파일 과정에서 예외 처리 코드 유무 검사 X

예외 클래스

자바에서 예외를 클래스로 관리
실행 도중 예외 발생 시 해당 예외 클래스로 객체 생성

  • 모든 예외 클래스는 java.lang.Exception클래스를 상속받음.
  • 실행 예외 클래스는 RuntimeException클래스와 상속 관계에서 하위 클래스에 속한다.

2. 실행 예외

자바 컴파일러가 체크 X, 개발자가 직접 실행 예외에 대한 예외 처리 코드 작성 필요.

자주 발생하는 실행 예외의 발생 시점과 오류 메시지는 꼭 알아두기

NullPointerException

가장 빈번하게 발생하는 실행 예외
객체 참조가 없는 상태(null값을 갖는 참조 변수)로 객체 접근 연산자(도트) 사용 시 발생.

  • 객체가 없는 상태에서 객체 사용시 예외 발생

손코딩

ArrayIndecOutOfBoundsException

배열에서 인덱스 범위 초과 시 발생

  • 길이가 3인 int[] arr = new int[3] 배열 선언을 했을 때 arr[3]을 사용은 인덱스 범위 초과이기 때문에 예외 발생

손코딩

2개의 실행 매개값이 없어서 args[0]과 args[1]을 사용할 수 없음.
-> 매개값 입력 시 예외 발생 X
[Run] - [Run Configurations] 메뉴에서 [Arguments]에 매개값 입력 가능

배열값 읽기 전 배열의 길이 조사 (손코딩)


배열 길이가 2이면 매개값 출력, 아니면 "두 개의 실행 매개값이 필요합니다."를 출력

[Run Configurations] 메뉴에서 매개값 입력 시 결과

NemberFormatException

숫자로 변환될 수 없는 문자가 매개값에 포함되어 있을 때 발생
(문자->숫자 변환은 11장에서 설명)

손코딩

ClassCastException

잘못된 타입 변환(casting)시 발생(ex. 대입된 객체가 아닌 다른 클래스 타입으로 타입 변환)

올바른 타입 변환 관계

  • 상위 클래스와 하위 클래스 간 | 구현 클래스와 인터페이스 간

ClassCastException을 발생 시키지 않으려면 instanceof 연산자로 타입 변환 전에 변환이 가능한지 확인

  • instanceof 연산의 결과가 true이면 좌항 객체를 우항 타입으로 변환 가능
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

profile
나는 이다이다.

0개의 댓글

관련 채용 정보