728x90
Exception : 실행시에 발생할 수 있는 모든 에러상황들
자바에서는 예외를 두고 목적에 따라서 처리(핸들링)하도록 설계되어있다.
또한 예외는 객체이기 때문에 클래스로 정의되어 있다.
특정 API는 컴파일시 예외를 처리하지 않으면 컴파일 되지 않는 예외들도 있다.
자바에서 예외가 발생되는 순서
- 컴파일
- 실행
- 실행중 예외 발생
- VM이 발생한 예외의 종류 및 내용을 파악한 뒤 예외 객체 생성
- 발생된 코드 밖으로 예외 던지기(예외 처리하기)
- 예외의 콜 스택에 전이
- 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 클래스의 자식 클래스들은 모두 알려지지 않은 예외이고,
나머지는 알려진 예외이다.
- 알려지지 않는 예외 (Unchecked Exception)
'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 |