티스토리 뷰

Basic 마이닝/Java

[자바] 예외처리 (1) - 예외처리란?

광부 금광캐는광부 2016.07.08 02:00


이 글은 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 블럭에서 발생한 경우]

  1.  발생한 예외와 일치하는 catch 문이 있는지 확인합니다.
  2.  일치하는 catch 문이 있다면 catch 블럭 내의 문장을 모두 실행하고 try catch 문을 빠져나갑니다.
  3.  일치하는 catch 문이 없다면 예외는 처리되지 못하고 에러를 발생 시키게 됩니다.

[예외가 try 블럭 밖에서 발생한 경우]
  1.  예외는 catch 문 안에서 처리되지 못한채 에러가 되어버립니다.




 다음 글에서는 예외 클래스의 계층 구조 (Exception 클래스에서 RuntimeException 을 제외한 Checked Exception과 RuntimeException 들인 UnChecked Exception에 대해서 알아보도록 하겠습니다.






댓글
댓글쓰기 폼