본문 바로가기
3.1 SpringBoot/Java

[java/기초] 예외처리

by Dohi._. 2024. 7. 16.
728x90

예외(Exception)

정상적이지 않은 case

  • 개발자가 해결가능한 문제
  • 사용자의 잘못된 조작, 개발자의 실수로 인한 문제 발생
  • 예외가 발생시 프로그램 종료, 단 예외 처리를 통해 정상적인 상태로 실행 가능
    ex) 0으로 나누기, 배열의 인덱스 초과, 없는 파일 열기 ...

에러 (Error)

  • 개발자가 해결이 불가능한 문제
  • 하드웨어의 오류 혹은 고장으로 인한 문제 발생
  • 에러가 발생시 프로그램 종료후, 그후 정상적인 상태로 실행 불가능

예외 처리(Exception Handling)

정상적이지 않은 case에 대한 적절한 처리 방법

try{
//에외가 발생할수도 있는 부분;
}catch(예외case1){
//예외case1 발생시 실행문
}catch(예외case2){
//예외case2 발생시 실행문
}finally{
//항상 실행이 되는 부분;
}
// 예시
int = 0;

try{
    a=5/0;
}catch(ArithmeticException e){
    System.out.println(e);
}

finally

예외 발생 여부와 관계없이 항상 실행되는 부분

 

throw, throws

  • throw : 예외를 발생 시킴
  • throws : 예외를 전가 시킴 
  • 함수이름(){ throw new Exception(); } 함수이름() throws Exception { }

 

import java.io.IOException;

class NotTenException extends RuntimeException {}

public class Main {

    public static boolean checkTenWithException(int ten) {
        try {
            if (ten != 10) {
                throw new NotTenException(); // 예외생성
            }
        } catch (NotTenException e) {
            System.out.println("e = " + e);
            return false;
        }

        return true;
    }
    
 //예외던짐 즉 사용하는 곳에서 예외처리를 해야함
    public static boolean checkTenWithThrows(int ten) throws NotTenException { 
        if (ten != 10) {
            throw new NotTenException(); //예외발생을 했지만 처리를하지않음
        }

        return true;
    }

    public static void main(String[] args) throws IOException {


        boolean checkResult ;
        checkResult = checkTenWithException(5); 
        System.out.println("checkResult = " + checkResult);

        try {
            checkResult = checkTenWithThrows(5);
        } catch (NotTenException e) {
            System.out.println("e = " + e);
        }
        System.out.println("checkResult = " + checkResult);

    }

}
728x90

'3.1 SpringBoot > Java' 카테고리의 다른 글

[JAVA/기초] 람다식  (2) 2024.07.20
[JAVA/기초] 컬렉션프레임워크  (2) 2024.07.19
[Java/기초] 입출력  (0) 2024.07.14
[Java/기초] 내부클래스  (0) 2024.07.14
[java/기초] 인터페이스  (0) 2024.07.13

댓글