Tiny Bunny [JAVA] 예외 처리 - 솜님의 블로그
솜님의 블로그
카테고리
작성일
2024. 7. 26. 11:01
작성자
겨울솜사탕

예외처리

프로그램을 이용하다가 예외가 발생하게 되면, 프로그램이 그 즉시 종료(비정상 종료)되기 때문에

예외를 개발자가 미리 처리해야 한다.

 

예외처리를 하는 이유는?

프로그램이 비정상적으로 종료되는 것을 예방하기 위해서.

 

예외처리 하는 방식은?

예외처리가 발생할 수 있는 부분을 try문으로 감싸주고,

그 아래에 바로 catch문으로 예외가 발생했을 경우 수행할 코드를 작성해 준다.

 

 

예시.

public static void main(String[] args){
	int[] datas=new int[3];
    try{
    	System.out.println("로그 01");
        // 예외가 발생할 확률이 존재하는 코드를 작성
        System.out.println(datas[0]);
        // 만약 예외가 발생한다면, 즉시 catch문으로 이동한다.
        
        int a = 10;
        int b = 1;
        int c = a/b;
        
        Scanner sc = new Scanner(System.in);
        System.out.println("정수 입력 >> ");
        int num = sc.nextInt();
        
        System.out.println("로그 02");
    }
    catch(ArrayIndexOutOfBoundsException e){
    	System.out.println("예외가 발생했을 때 수행할 코드를 작성");
        e.printStackTrace(); // 예외 발생한 원인 보여줘!
    }
    catch(ArithmeticException e){
    	System.out.println("0으로는 나누기를 할 수 없습니다!")
    }
    catch(Exception e){
    	System.out.println("알 수 없는 예외 발생함")
    }
    finally{
    	System.out.println("예외 발생여부와 무관하게 항상 수행되는 코드를 작성")
    }
	System.out.println("로그 03")


}

 

try와 catch는 짝꿍이어서, 항상 같이 붙어 다닌다고 볼 수 있다.

 

try문 안쪽에는 예외가 발생할 확률이 존재하는 코드를 작성해 주고,

그 아래에 catch문을 작성해 준다.

try문에서 예외가 발생하게 된다면 그 즉시 catch문으로 이동하게 된다.

 

따라서 try catch문을 사용하게 된다면 설령 예외가 발생되더라도 프로그램이 정상적으로 종료된다.

 

++

- finally의 경우에는, 위의 예제에서 기재한 것과 같이 예외 발생여부와 무관하게 항상 수행되는 코드를 작성할 수 있는 곳이다.

- 어떤 오류가 발생할지 모르는 경우에는, Exception을 적어준다.

catch(Exception e){
	System.out.println("알 수 없는 예외 발생");
}

 

🍀내용 정리!
예외처리 하는 이유 : 비정상 종료를 막기 위해서


try에는 예외가 발생할 수 있는 코드를 작성,
     예외가 없다면 : 아무 일도 없음
     예외가 발생한다면 : 즉시 catch문으로 이동됨. (유형에 맞는 catch문으로!)


예외 발생 여부와 관계없이 수행시킬 거라면
     : finally 작성
어떤 오류가 발생할지 모를 때에는
     : 모든 Exception들의 최상위 클래스인 Exception을 적어준다.


catch문 () 안에는 try문에서 오류가 났을 때 어디로 이동해야 하는지를 적어준다.

 

'JAVA > java' 카테고리의 다른 글

[JAVA] 파일 입출력  (0) 2024.07.28
[JAVA] thread  (0) 2024.07.26
[JAVA] 결합도와 응집도  (1) 2024.07.25
[JAVA] MVC 패턴_2  (4) 2024.07.25
[JAVA] 팀 과제_커뮤니티 사이트  (0) 2024.07.19