본문 바로가기
JAVA/JAVA복습(멘토씨리즈 자바)

[JAVA복습] 14. 예외처리

by ssunooo 2024. 7. 25.

 

 

01. 핵심 정리

 

예외처리란?

프로그램 구동 중에 예외가 발생했을 경우 프로그램의 갑작스러운 종료를 막고 정상 동작할 수 있도록 처리하는 과정

 

Error / Rutime Error

프로그램에서의 오류는 Error와 Rutime Error가 있음

Error는 수습할 수 없는 치명적인 오류를 의미, Rutime Error는 예측할 수 있고 처리 가능한 오류를 의미

 

try-catch

예외 처리는 try-catch 구문을 사용

try영역에서는 예외가 발생할 수 있는 코드를 입력하며 catch영역에는 발생 예상되는 예외 클래스를 매개변수로 선언하며,

예외 발생 시 처리할 코드를 입력

 

catch 구문은 여러 개 사용하여 처리 가능

여러 개의 catch문이 있어라도 차례로 하나씩 실행되며 동시에 발생하지 않음

 

finally

finally 키워드는 예외 발생 유무와 상관없이 실행

 

throws

throws키워드를 사용하면 메서드에서 발생하는 예외를 직접 처리하지 않고 호출한 곳에서 처리 가능

메서드 뒤에 throws 예외 클래스를 붙여서 처리

 

문법적인 예외가 발생하지 않았더라도,

프로그램의 규칙에 맞지 않거나 흐름에 문제가 생기면 사용자가 직접 예외를 발생시킬 수 있음

 


 

2. 응용 문제

 

Q1. 다음 코드는 컴파일 오류가 발생합니다. 오류를 확인하고 예외 처리 문법을 사용하여 해결해 보세요.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package section14;
 
public class ValueExceptionExample {
    public static void main(String[] args) {
        
        int data=10;
        double result=0;
        
        result=(double)data/0;
        
        System.out.println("결과는 : "+result);
        
    }
}
 
cs

A1. 0으로 나누게되면 컴파일 오류가 발생하므로 try-catch문의 ArithmeticException e 를 사용해서 오류를 잡아준다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package section14;
 
public class ValueExceptionExample {
    public static void main(String[] args) {
        
        int data=10;
        double result=0;
        
        try {
            result=(double)data/0;
        }
        catch(ArithmeticException e) {
            System.out.println("0으로는 나눌 수 없습니다");
        }
        
        System.out.println("결과는 : "+result);
        
    }
}
 
cs

 


 

Q2. 다음 코드에서 사용자가 음수를 입력할 경우 임의로 예외를 발생시켜 음수의 값을 합산에 포함되지 않도록 처리해

       보세요.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package section14;
 
import java.util.Scanner;
 
public class MinusValueExceptionExample {
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        
        int count=5;
        int data=0;
        int sum=0;
        
        while(count<5) {
            System.out.println("숫자를 입력하세요.");
            data=scan.nextInt();
            sum+=data;
        }
        System.out.println("숫자 합 : "+sum);
    }
}
 
cs

 


A2. 사용자 정의 예외처리를 통해 0미만을 입력하게 되면

       예외처리를 할 수 있게 하였다.


[InputErrorException.java]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package section14;
 
public class InputErrorException extends Exception {
    private String massage;
    public InputErrorException(String message) {
        this.massage=message;
    }
    @Override
    public String getMessage() {
        return this.massage;
    }
    
}
 
cs

[MinusValueExceptionExample.java]

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
32
33
34
package section14;
 
import java.util.Scanner;
 
public class MinusValueExceptionExample {
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        
        int count=0;
        int data=0;
        int sum=0;
 
        while(count<5) {
            
            try {
                System.out.println("숫자를 입력하세요.");
                data=scan.nextInt();
 
                if(data<0) {
                    throw new InputErrorException("입력이 잘못되었습니다.");
                }
                else {
                    sum+=data;
                    count++;
                }
            }
            catch(InputErrorException e) {
                System.out.println(e.getMessage());
            }
        }
        System.out.println("숫자 합 : "+sum);
    }
}
 
cs

 

 

2024.07.25