백엔드/자바

오류와 예외(Error, exception)

ksge7 2020. 8. 11. 01:54

오류

프로그램을 실행하면서 어떤 원인에 의해 오작동 또는 비정상적으로 종료되는 경우 이를 에러(오류)라고 부른다.

 

이러한 에러는 크게 3가지로 나뉜다.

 

◎ 컴파일 에러: 컴파일 시에 발생하는 에러

◎ 런타임 에러: 컴파일 단계는 통과했으나 실행시 발생하는 에러

◎ 논리적 에러: 실행은 되지만, 의도와 다르게 작동하는 것

 

자바는 이러한 비정상적인 작동, 오작동을 에러(Error)과 예외(Exception)으로 구분했다.

에러(Error)와 예외(Exception)의 차이점

◎ 에러는 프로그램 코드에 의해 수습될 수 없는 심각한 오류 ex) 스택 오버플로우, 메모리 부족 등

◎ 예외는 발생하더라도 수습이 가능한 에러보다 낮은 단계의 오류를 말함

◎ 에러는 발생시 비정상적인 종료를 막을 수 없지만, 예외는 적절한 코드를 작성해 비정상적 종료를 막을 수 있음.

예외 클래스의 계층 구조

자바는 예외와 에러를 미리 클래스에 구현하고 있다.

 

예외(Exception)은 Object클래스의 자손으로 Exception 클래스와 Runntime Exception 클래스로 나뉜다.

 

◎ Exception 클래스:

- 실행 도중 생기는 예외로 주로 사용자 입력에 의한 오류가 많음. 예외 꼭 처리해야줘야 함.

- 컴파일러가 예외처리를 확인하는 'checked예외'

 

◎ Runtime Exception 클래스:

- 주로 프로그래머의 실수에 의해 발생하는 예외.

- 컴파일러가 예외처리를 하지 않는 'unchecked예외'에 해당함.