본문 바로가기

Java/기본

[Java] 예외처리 - 예외(Exception)란

에러 vs 예외

에러(Error) 컴퓨터 하드웨어의 오동작 또는 고장으로 인한 오류
프로그래머가 해결할 수 없는 중대한 오류
예외(Exception) 사용자가 잘못 실행하거나 개발자의 잘못된 코딩으로 발생하는 프로그램 오류
프로그래머가 해결할 수 있는 가벼운 오류

 


예외의 종류

예외는 일반예외와 실행예외 2가지로 나뉜다.

일반예외 (Exception) 컴파일러 체크 예외.
자바소스를 컴파일하는 과정에서 문법에 오류 발생
예를들어 Stirng 이라고 작성하는 등 문법에 어긋나는 예외
실행예외 (Runtime Exception) 컴파일 과정에서 예외처리 코드를 검사하지 않는 예외
개발자가 직접 예외처리 코드를 작성해야함

 

예외 발생시 실행 결과

일반예외 컴파일러가 자바파일을 컴파일하는 과정에서 실패. 프로그램 시작 불가
실행예외 예외가 발생하는 코드를 만나면 프로그램 실행 중 중단됨

 

예외처리가 필요한 이유

오류가 발생해도 프로그램이 종료되지 않고 계속 실행될 수 있도록 함

 

 


자주 발생하는 예외

 

실행예외는 자바 컴파일러가 경고창을 띄우지 않기 때문에 프로그램을 실행하는 과정에서

마주하는 예외이다. 아래는 개발상황에서 자주 마주하는 예외상황이다.

 

NullPointerException

null 값을 참조변수로 하는 객체에서 객체 접근연산자를 실행할 때 발생하는 상황이다.

없는 객체에 기능을 수행하려고 하니 발생하는 예외상황.

 

ArithmeticException

어떤 수를 0으로 나누려고 할 때 발생하는 예외

 

ArrayIndexOutOfBoundsException

배열에서 주어진 범위를 초과하여 코드가 실행되는 경우 발생하는 예외이다.

 

NumberFormatException

코딩의 세계에서는 숫자 형식과 문자 형식이 다르다. 하지만 타입 변환과정 통해 형태를 변환할 수 있다.

NumberFormatException 은 숫자로 변환할 수 없는데 숫자로 변환하려는 코드에서 발생하는 예외이다.

String str = "120";
Integer.parseInt(str);
Integer.parseInt("12345");
Integer.parseInt("t-shirt");	//exception

 

 

ClassCastException

Casting이란 원하는형태로 적절히 클래스를 변환하는 것을 말한다.

상속이 이루어진경우 상위클래스<->하위클래스 혹은 인터페이스 <-> 구현객체 간에 casting이 이루어진다.

올바른 방식으로 casting을 하지 않는 경우 발생하는 예외