728x90
반응형
SMALL
https://www.youtube.com/watch?v=NwNK-dj-HG4&list=PLlTylS8uB2fA5PevGI6ARN6v-VQWmqaix&index=10
예외처리 클래스란?
- 모든 예외 클래스는 Throwable클래스를 상속받고 있다.
- Exception은 수많은 자식 클래스가 있다. ex) io, system, sql, 등등..
- RuntimeException은 Unchecked Exception이며, 그 외 Exception은 Checked Exception으로 볼 수 있다.
Unchecked Exception
로직을 어떻게 구성하냐에 따라 오류가 발생할 수도 있고 발생을 안할 수도 있다.
- 처리여부: 명시적 처리 강제하지 않음
- 확인시점: 실행 중 단계
- 예외발생시 트랜잭션: 롤백
- 대표예외: NullPointer, illegal Argument, IndexOutOfBound, System
Checked Exception
명확하게 코드에서 보이는 오류이다. 틀린부분이 보이는 것을 의미한다.(코드에서 빨간줄)
- 처리여부: 반드시 예외 처리 필요
- 확인시점: 컴파일 단계
- 예외발생시 트랜잭션: 롤백하지 않음
- 대표 예외: IO, SQL
예외처리 메소드를 직접 처리하기 위해 try, catch, finally 키워드를 이용하는데 Try Catch블록에 대해서 알아보자
try {
// 예외가 발생할 것으로 예상되는 코드
} catch (Exception1 e1) {
// Exception1 이 발생했을 경우 실행되는 코드
} catch (Exception2 e2) {
// Exception2 이 발생했을 경우 실행되는 코드
} catch (Exception3 e3) {
// Exception3 이 발생했을 경우 실행되는 코드
}
기본적인 Try Catch 블록이다.
Try 블록
- 예외가 발생할 가능성이 있는 코드 범위를 지정하는 블록
Catch 블록
- try블록에서 예외가 발생할 시에 실행되는 블록
- 예외타입 매개변수는 try블록에서 발생할 수 있는 예외타입을 담고 있다.
- 다양한 예외가 발생할 수 있는 경우에는 여러개의 catch블록을 설정 할 수 있다.
Finally블록
- Finally블록은 예외와 상관없이 무조건 실행되는 블록이다.
- 필수적으로 사용해야 하는 블록은 아니면 필요한 경우에 사용하면된다.
package exception;
import java.util.Scanner;
/**
* 예외처리 예시
* thinkground.studio
* YouTube : Around Hub Studio
* @author Flature
*/
public class TryCatch {
//TryCatch클래스 생성자
public TryCatch() {
Scanner sc = new Scanner(System.in);
//입력받은 값
String input = sc.next();
//맨처음에 try구문을 실행하는데 Integer.parseInt구문에서 예외상황 발생 시 catch구문으로 넘어가서
//변경되지 못한 값을 작성한다. NumberFormatException은 문자열을 숫자로 변경할 수 없을 때 발생하는 예외이다.
try {
//입력받은 값이 숫자일 때는 system에서 숫자: changedInput실행
int changedInput = Integer.parseInt(input);
System.out.println("숫자 : " + changedInput);
}
//catch구문으로 가서 변경되지 못한값 작성
//numberformatexception으로 catch구문 작성
catch (NumberFormatException e) {
System.out.println("변경되지 못한 값 : " + input);
//finally는 예외상황과 관계없이 무조건 실행되는 구문이다.
} finally {//마지막에는 finally 구문(예외상황과 관계없이 실행되는 구문)
System.out.println("finally 구문");
}
}
public static void main(String[] args) {
new TryCatch();
}
}
위 코드는 try catch finally를 담고있는 클래스이다.
catch 문을 보면 예외클래스 타입과 변수 e 가 선언되어 있는데, 만일 try문에서 예외가 발생하면 그 예외에 맞는 예외클래스가 catch문에 argument로 있으면 예외상황에 대비가능하다.
현재 여기서는 NumberFormatException이라는 예외처리 인자가 있는데 이 Exception은 문자열을 숫자로 바꿀 수 없을 때 발생하는 예외이다.
728x90
반응형
LIST
'자바' 카테고리의 다른 글
자바 - String 클래스 (0) | 2025.04.15 |
---|---|
[자바/Java] - 메모리 구조 (0) | 2025.02.26 |
[Java/자바] - ASCII(아스키코드) 문자 ↔ 숫자 (1) | 2025.02.24 |