오늘이라도

혼자 공부하는 자바, Ch. 10-1 예외 클래스 본문

취업성공패키지 SW 개발자 교육/Java

혼자 공부하는 자바, Ch. 10-1 예외 클래스

upcake_ 2020. 3. 18. 20:13
반응형

 

https://github.com/upcake/Class_Examples

교육 중에 작성한 예제들은 깃허브에 올려두고 있습니다. 


1. 예외와 예외 클래스

 - 예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말한다.

 - 자바는 예외가 발생할 가능성이 높은 코드를 컴파일할 때 예외 처리 유무를 확인한다.

 - 일반 예외 : 확인 예외라고도 하며 예외 처리 코드가 없다면 컴파일 오류가 발생한다.

 - 실행 예외 : 미확인 예외라고도 하며 실행을 해야 예외가 발생한다.

 

 

2. 실행 예외

 - 자바 컴파일러가 실행 예외를 체크하지 않기 때문에 개밪라의 경험에 의해서 예외 처리 코드를 작성해야 한다.

 

 (1) NullPointerException

  - 가장 빈번하게 발생하는 실행 예외로, 객체가 없는 상태에서 객체를 사용하려 할 때 예외가 발생한다.

▲예제 01. NullPointerException

 - 6라인에서 data 변수는 null 값을 가지기 때문에 String 객체를 참조하고 있지 않다.

 - 하지만 7라인에서 String 객체의 toString() 메소드를 호출하고 있다. 여기서 NullPointerException이 발생한다.

 

 (2) ArrayIndexOutOfBoundsException

  - 배열에서 인덱스 범위를 초과할 경우 발생하는 실행 예외이다.

▲예제 02. ArrayIndexOutOfBoundsExceptionExample

  - 2개의 실행 매개값을 주지 않았기 때문에 args[0], args[1]과 같이 인덱스를 사용할 수 없다.

  - 따라서, 5라인에서 ArrayIndexOutOfBoundsException이 발생한다.

▲예제 03. ArrayIndexOutOfBoundsExceptionExample

  - 예제 02를 위와 같이 수정하면 예외가 발생하지 않는 좋은 프로그램이 된다.

  - 배열값을 읽기 전에 배열의 길이를 먼저 조사한 뒤, 실행 매개값이 없거나 부족할 경우 조건문을 이용해서 사용자에게 알려준다.

 

 (3) NumberFormatException

  - Wrapper 클래스를 사용해서 문자열을 숫자로 변환할 때, 숫자로 변환될 수 없는 문자가 포함되어 있다면 예외를 발생시킨다.

▲예제 04. NumberFormatException

  - data1 변수의 문자열 "100"은 숫자로 변환이 가능하기 때문에 8라인이 정상적으로 실행된다.

  - data2 변수의 문자열 "a100"은 숫자로 변환할 수 없기 때문에 9라인에서 예외가 발생한다.

 

 (4) ClassCastException

  - 타입 변환(Casting)은 상위 클래스와 하위 클래스 간에 발생하고 구현 클래스와 인터페이스 간에도 발생한다.

  - 이러한 관계가 아니라면 클래스는 다른 타입으로 변환할 수 없기 때문에 ClassCastException이 발생한다.

▲예제 05. ClassCastException

  - 9라인에서 Cat 객체를 매개값으로 주어서 Dog 타입으로 변환할 수 없다.

  - 따라서 14라인에서 ClassCastException이 발생한다.

반응형