728x90
Exception : 실행시에 발생할 수 있는 모든 에러상황들

 

자바에서는 예외를 두고 목적에 따라서 처리(핸들링)하도록 설계되어있다.

또한 예외는 객체이기 때문에 클래스로 정의되어 있다.


특정 API는 컴파일시 예외를 처리하지 않으면 컴파일 되지 않는 예외들도 있다.

자바에서 예외가 발생되는 순서

  1. 컴파일
  2. 실행
  3. 실행중 예외 발생
  4. VM이 발생한 예외의 종류 및 내용을 파악한 뒤 예외 객체 생성
  5. 발생된 코드 밖으로 예외 던지기(예외 처리하기) 
  6. 예외의 콜 스택에 전이
  7. main메소드 밖까지 던지게 되면 프로그램 비정상 종료

예외 처리 방법

try를 활용하여 오류를 막고 다른 부분까지 실행되게 할 수 있다.

1. 예외 복구

예외가 발생하여도 정상적으로 실행되도록 하는 것

try{
	예외가 발생할만한 코드;
}catch(예외종류 e){
	예외가 발생하면 실행할 코드;
 }finally{
	예외 발생유무와 상관없이 반드시 실행해야 할 코드;
}


2. 예외 회피

메소드 뒷부분에 throw 처리할 예외타입을 적어주면
메소드가 실행되다가 예외를 만나면 메소드를 호출한쪽으로 예외를 던진다.
main메소드의 경우 VM으로 던진다. 

 


3. 직접 예외 객체 만들어서 처리하기
예외 객체를 만들어서 처리하기

throw 객체명;
	@override
	public void printStrackTrace(){
		super.printstrackTrace();
		System.out.println("계산 불가");
	}

 


Throwable : 예외의 상위클래스

 

예외의 상위클래스는 lang패키지의 Throwable이며, 자식클래스는 Error와 Exception이 있다.

  • 에러 (Error) : 개발자가 미리 예측할 수 없는 오류
    일반적으로 JVM(Java Virtual Machine)에 관련된 에러 상황들을 정의한 클래스 이다.
    따라서 프로그래머는 Error 타입들의 예외(에러)는 처리할 방법이 없어 무시한다.
    - 시스템 레벨에서 발생하는 에러
    - 심각한 오류로 더 이상의 실행이 불가능

  • 예외 (Exception) : 개발자가 미리 예측이 가능한 오류
    프로그래머가 '예외 처리'(Exception Handling)를 통해 예외 상황을 처리할 수 있다.
    - 프로그래머가 구현한 로직에서 발생
    - 경미한 오류로 복구가 가능

    ▶ 예외의 종류
    • 알려지지 않는 예외 (Unchecked Exception)
      컴파일러가 관여하지 않으면서 실행시에 예외가 발생할수도, 발생하지 않을수도 있는 예외
      프로그램을 작성하면서 예외를 발생시키지 않도록 주의
      - 예외 처리를 할 필요가 없음

    • 알려진 예외 (Checked Exception)
      컴파일러가 관여하는 예외
      치명적인 예외 상황을 발생시키므로 반드시 예외를 처리해야한다.
      - 예외 처리가 강제 (예외 처리 코드를 작성하지 않을 경우 컴파일 오류 발생)

      ※ Exception하위 클래스 중 RuntimeException 클래스의 자식 클래스들은 모두 알려지지 않은 예외이고,
      나머지는 알려진 예외이다.

 

'JAVA' 카테고리의 다른 글

내부 클래스 (Inner Class)  (0) 2021.07.27
이진 트리 (Binary Tree)  (0) 2021.07.26
스택 (Stack)과 큐(Queue)  (0) 2021.07.26
맵 (Map)  (0) 2021.07.26
HashSet  (0) 2021.07.22

+ Recent posts