Programming/JAVA

[JAVA] 자바 예외 처리 (Java Exception)

Nirsa 2022. 5. 24. 19:29
반응형
자바 예외 처리 (Java Exception)

자바에서 특정 오류가 발생했을 때 무시하고 싶거나, 오류에 따라 적당한 작업을 처리하도록할 수 있도록 해줄 수 있도록 해주는것이 예외 처리 입니다.

 

1. 에러 종류
  1. 컴파일 에러(compile-time error) : 컴파일할 때 발생하는 에러 (Error는 코드로 수습할 수 없는 심각한 오류이며, Exception은 개발자가 작성한 의도와 다르게 동작하게 됩니다.)
  2. 런타임 에러(runtime error) : 실행할 때 발생하는 에러 (프로그램 종료)
  3. 논리적 에러(logical error) : 작성 의도와 다르게 동작 (프로그램 종료X)

 

2. 예외 종류

예외의 종류로는 Exception의 자손과 RuntimeException이 있습니다.

  • Exception의 자손 : 개발자의 외적인 요인에 의해 발생 (ex. 입출력, 클래스가 없을때, ...)
  • RuntimeException : 개발자의 실수로 발생하는 예외 (ex. 형변환, 널포인터, 인덱스 범위 벗어남, ...)

또한 예외의 종류에는 checked 예외와 unchecked 예외가 있는데, 컴파일러가 예외 처리 여부를 체크 하는지 마는지에 따라 예외 처리가 필수인지, 선택인지 나눠지게 됩니다.

  • checked 예외 : 컴파일러가 예외 처리 여부를 체크 (예외처리 필수) , Excpetion
  • unchecked 예외 : 컴파일러가 예외 처리 여부를 체크하지 않음 (예외처리 선택), RuntimeException

 

3. 예외 상속구조

 

4. 예외 처리 기본 문법

예외 처리 시 기본 문법은 try-catch-finally 입니다. 아래 코드블럭에 주석으로 설명을 적어두었으며, throws의 경우 메서드를 호출한곳으로 예외를 넘겨서 호출한곳에서 예외를 처리하도록 합니다. 만약, main 메서드까지 throws로 다 넘긴다면 비정상 종료되며 JVM이 마지막으로 예외를 처리하게되어 출력하게 됩니다.

또한 아래 내용들을 사용하여 예외가 발생한 정보를 출력하여 확인할 수 있습니다.

  • printStackTrace() : 예외 발생 당시의 호출스택(Call Stack)에 있었던 메서드의 정보와 예외 메시지 출력
  • getMessage() : 발생한 예외 클래스의 인스턴스에 저장된 메시지 가져오기
public class test  {
	// throws : Exception 발생 시 호출된 곳으로 예외를 넘김
	public test() throws Exception {
    
		try {
			// 예외 처리가 발생할 가능성이 있는 코드
		} catch(RuntimeException e) {
			// 예외가 발생했을 때 실행할 코드
			// 현재 코드상으로는 RuntimeException 발생 시  catch되어 해당 라인에 있는 코드 실행
		} finally {
			// 예외 발생 유무와 상관없이 반드시 실행할 코드
		}
		
	}
}
반응형