JAVA 38. Custom Exception

1 minute read

Custom Exception

까먹었으면 다시 읽고 오기 (JAVA 08. Exception)

예제

Description

WithCS 4429 : 16진법 예외처리

Sample Code를 참고하여 입력 문자열이 16진법이 아니면 16진법 예외가 발생한 위치를 알려주는 프로그램을 구현하시오.

본 문제에서 사용하는 16진법은 아라비아 숫자와 알파벳 대문자__(소문자는 예외처리)__로만 표현된 숫자라고 가정한다. 0X, 0x 표기는 생략한다.

Input

Line 1 : 문자열의 개수 N

Line 2 ~ 1+N : 16진법이거나 아닌 문자열들

Output

Line 1 ~ N : 16진법이라면 10진수로 변환 /

16진법이 아니라면

HexFormatException: Illegal hex character: “16진법이 아닌 문자” 출력

Sample Code

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int T = sc.nextInt();
        for (int t = 0; t < T; t++) {
            String hex = sc.next();
            int value;
            try {
                value = HexFormat.parseHex(hex);
            } catch (HexFormatException ex) {
                System.out.println(ex);
                continue;
            }
            System.out.println(value);
        }
    }

}

YOUR_CODE

Sample Input

5
A5
FAA
T10
ABC
10.

Sample Output

165
4010
HexFormatException: Illegal hex character: T
2748
HexFormatException: Illegal hex character: .

Custom Exception

예외는 또 하나의 클래스이기 때문에, Exception 클래스를 상속받는 새로운 클래스를 만들어 줌

class HexFormatException extends Exception {
}

Exception 클래스의 생성자의 매개변수가 String인 경우, 예외 문자열을 출력을 한다.

이를 이용해 해당 클래스 안에 예외가 발생할 때 출력될 문자열을 넣은 생성자를 만들어 준다.

class HexFormatException extends Exception {
  public HexFormatException(char a) {
    super("Illegal hex character: "+a);
  }
}

예제를 보면, HexFormatExceptionHexFormat 클래스의 parseHex 메소드를 다룰 때 발생하므로,

HexFormat 클래스와 그 안에 parseHex 메소드를 만들어준다.

parseHex 메소드가 HexFormatException을 발생시키기 때문에,

메소드 뒤에 throws HexFormatException을 붙여준다.

class HexFormat {
  static int parseHex(String str) throws HexFormatException {
  
  }
}

그리고 예외가 발생하는 조건문 안에서 throw 키워드를 이용해 예외를 발생시킨다.

예를 들어, str.charAt(i)G인 경우 예외가 발생한다고 할 때, 다음과 같이 작성한다.

if(str.charAt(i) == 'G') {
  throw new HexFormatException(str.charAt(i));
}

Thanks for watching my post!

Categories:

Updated:

Comments