이 글은 PC 버전 TISTORY에 최적화 되어있습니다.
서론
필자는 예외 처리에 대해서 에러 발생하면 catch 문으로 가는 것, 그리고 네트워킹 같은 try catch 구문이 필요한 부분은 그냥 꼭 써줘야되는구나 라는 부끄럽지만 무지한 생각을 가지고 있었습니다. 무지한 저를 바꾸기 위해 첫 번째로 예외처리의 정의와 목적, 더 나아가서 Checked Exception vs Unchecked Exception 에 대한 대용도 다뤄보도록 하겠습니다.
에러(error) vs 예외(exception)
프로그램을 돌렸을 때 오작동이나 비정상적으로 종료되는 원인을 오류나 에러라고 합니다. 이 에러는 '컴파일 에러'와 '런타임 에러'로 나눌 수 있는데, 글 자 그대로 컴파일 시 발생하는 에러와 실행 도중에 발생하는 에러를 뜻합니다. 일반적으로 컴파일러가 컴파일 에러를 통해 소스코드의 기본적인 검사를 마친다고 해서 실행 시에도 에러가 발생하는 것은 아닙니다. 실행 도중의 잠재적 오류까지 검사할 수 없기 때문에 컴파일이 잘 이루어졌어도, 실행 도중에 잘못된 결과를 얻거나 비정상 종료가 될 수 있는 것이죠.
자바에서는 실행 시 발생할 수 있는 오류를 '에러(error)'와 '예외(exception)' 두 가지로 구분합니다. 에러는 메모리 부족, 스택오버플로우와 같이 발생하게 되면 복구할 수 없는 심각한 오류이고, 예외는 발생하더라도 수습할 수 있을 정도의 비교적 덜 심각한 오류입니다. 에러는 발생 시 막을 방도가 없지만, 예외는 프로그래머가 예외처리를 통해서 비정상종료를 막을 수 있는 것이죠.
- 에러(error) : 발생 시 수습할 수 없는 심각한 오류
- 예외(exception) : 예외 처리를 통해 수습할 수 있는 덜 심각한 오류
예외처리란?
예외처리란 프로그램 실행 시 발생할 수 있는 예외에 대비하는 것으로 프로그램 비정상종료를 막고 실행 상태를 유지하는 것입니다.
예외처리구문 try catch
public class ExceptionEx1 { public static void main(String[] args) { try { // 예외 발생 가능성 있는 문장을 적습니다. } catch (Exception e) { // Exception이 발생할 경우 이를 처리하기 위한 문장을 넣습니다. } } }
기본적인 try catch 구문은 위와 같이 이루어 집니다. try 문에서 Exception 예외가 발생할 경우 catch (Exception e) 로 빠져서 그 안의 실행문을 실행하는 것이죠.
try catch 문의 순서를 이해하기 쉽게 정리해보도록 하겠습니다.
[예외가 try 블럭에서 발생한 경우]
- 발생한 예외와 일치하는 catch 문이 있는지 확인합니다.
- 일치하는 catch 문이 있다면 catch 블럭 내의 문장을 모두 실행하고 try catch 문을 빠져나갑니다.
- 일치하는 catch 문이 없다면 예외는 처리되지 못하고 에러를 발생 시키게 됩니다.
[예외가 try 블럭 밖에서 발생한 경우]
- 예외는 catch 문 안에서 처리되지 못한채 에러가 되어버립니다.
다음 글에서는 예외 클래스의 계층 구조 (Exception 클래스에서 RuntimeException 을 제외한 Checked Exception과 RuntimeException 들인 UnChecked Exception에 대해서 알아보도록 하겠습니다.
반응형
'Basic > Java' 카테고리의 다른 글
[JAVA] 객체(Object)의 형 변환 (2) | 2016.07.19 |
---|---|
[JAVA] Static에 대하여 (0) | 2016.07.19 |
[JAVA] JVM의 메모리구조 (0) | 2016.07.19 |
[JAVA] 자바의 변수 (클래스 변수, 인스턴스 변수, 지역 변수) (6) | 2016.07.19 |
[JAVA] 절차지향언어와 객체지향언어 (0) | 2016.07.19 |
[자바] 예외처리 (2) - 예외클래스의 구조 (1) | 2016.07.08 |