티스토리 뷰
예외처리란?
-프로그램에서 발생할 수 있는 예기치 않은 상황을 처리하는 방법, 흔히말하는 예외는 일반적으로 프로그램 실행 중에 발생할 수 있는 오류나 예기치않은 상황을 나타냅니다.
예외 클래스의 계층구조
예외 클래스는 계층 구조를 가지고 있으며, 가장 상위는 Throwable 그 하위에는 두개의 서브클래스인 Error 클래스와 Exception 클래스가 있습니다.
Exception - 일반적인 예외를 처리하기 위해 사용되는 클래스로, 프로그램 실행중에 예상할 수 있는 예외들을 가지고 있습니다. 크게 두가지로 나뉘는데 하나는 RuntimeException, 나머지는 CheckedException으로 나뉘어 구분됩니다. 전자는 개발자의 코드에 의해 발생할 수 있는 예외이며 개발자가 꼭 명시적으로 구현할 필요는 없으며 , 후자는 개발자의 코드외부에서 발생하는 예외이며 ,개발자가 반드시 예외처리를 명시적으로 구현해야합니다.
Error - 시스템 레벨에서 발생하는 치명적인 예외를 처리하기 위해 사용되는 클래스로, 개발자가 직접 처리할 수 없고, 시스템 레벨에서 처리되어야 합니다.
try-catch구문
-자바에서 예외 처리를 위해 사용되는 구문이며, try블록안에서 예외가 발생할 가능성이 있는 코드를 작성하고, catch블록에서 예외를 처리합니다. 예외가 발생하면, 예외 객체가 생성되어 catch 블록으로 전달되고, catch 블록에서 해당 예외를 처리합니다. 마지막으로 finally는 예외가 발생하던 안하던 실행되는 블록으로, 무조건 실행되는 코드가 들어갑니다.
예외가 발생했을 경우에는 try-catch-finally 순으로 실행이 되고, 예외가 발생하지 않는경우에는 try-finally순으로 실행이 됩니다.
try {
// 예외가 발생할 가능성이 있는 코드
} catch (ExceptionType1 e1) {
// ExceptionType1에 해당하는 예외를 처리하는 코드
} catch (ExceptionType2 e2) {
// ExceptionType2에 해당하는 예외를 처리하는 코드
} finally {
// 예외가 발생하든 안하든 실행되는 코드.
}
강제 예외 발생(throw)
-throw 키워드를 통해 고의로 예외를 발생시킬 수 있습니다. 강제로 예외를 발동 시키며 조건에따라 예외처리를할때 사용이됩니다. Exception을 사용해 모든 예외를 다 포함할 수도있고, 사용자 예외처리를 만들수도있습니다.
public int divide(int a, int b) {
if (b == 0) {
throw new ArithmeticException("0으로 나눌 수 없습니다."); // b가 0일때 에러발생
}
return a / b;
}
.
.
.
try {
int result = divide(10, 0); // ArithmeticException 발생}
catch (ArithmeticException e) {
System.out.println(e.getMessage()); //오류시 , 예외 처리
}
catch (Exception e) { //모든 오류 다포함함.
System.out.println(e.getMessage());
}
메서드 예외 처리
-try-catch구문이외에 메서드에 예외를 선언하는 방법이 있는데 한 메서드(함수)가 실행될때 발생 가능한 예외들을 throws를 통해 처리를 할 수 있다.
예를 들어, 일반적인 try-catch구문이 다음과 같다고 가정을 한다.
try {
readFile("file.txt");
} catch (IOException e) {
System.out.println(e.getMessage());
}
이처럼 일반적인 try-catch구문으로 파일을읽을때 IOException을 처리할때, 메서드로 처리하면 다음과 같다.
public void readFile(String fileName) throws IOException {
readFile("file.txt");
}
다음과같이 메서드에 throws를 통해 예외를 처리하면되고, 다수의 예외를 처리시 ,(쉼표)를통해 처리 가능하다.
- Total
- Today
- Yesterday
- 데이터
- 자바
- 서버
- 배포
- 웹소켓
- 컴퓨터구조
- 프로토콜
- sql
- nat
- 자동화
- 도커
- 문법
- 포트포워딩
- 인공지능
- 네트워크
- 쿼리
- 파인튜닝
- 데이터베이스
- 컨테이너
- 테이블
- 스프링
- 메세지큐
- DB
- 깃허브
- IP주소
- 보안
- JPA
- 깃
- 클라우드
- 소프트웨어공학
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |