-
Java | 예외 처리 throws & throwJAVA/JAVA 2020. 2. 5. 17:45
throws
예외를 해당 메소드에서 처리하지 않고 미룬 후
메소드를 호출하여 사용하는 부분에서 예외를 처리하는 방법
형식
접근제어자 반환형 메소드명() throws 예외 처리 클래스명 {}
※ 복수의 예외 처리 클래스명 작성 가능
throw
사용자 정의 예외로 예외를 임의로 발생시켜서 프로그램을 테스트 할 수 있음
- 이미 존재하는 예외의 경우 throw를 사용하여 바로 예외를 발생시킬 수 있음
- 사용자 정의 예외의 경우 발생시키고자 하는 예외와 가장 유사한 예외 클래스를 상속
잘 모르겠다면 가장 상위 클래스인 Exception 클래스 상속
형식_사용자 정의 예외 클래스
class 사용자 정의 예외 클래스명 extends 예외 클래스명{ // 생성자 사용자 정의 예외 클래스명(String msg){ super(msg); } }
※ String msg: 에러 메세지를 인자로 받는 매개변수
상위 예외 클래스 생성자를 호출하고 예외 메세지를 인자로 전달받아서 예외 객체 생성
형식_예외 발생
throw new 예외 처리 클래스명("예외 메세지");
예제_throws & throw
package j200205; import java.util.Scanner; // 사용자 정의 예외, Exception 클래스 상속 class OverLength extends Exception { // 생성자, 예외 메세지를 인자로 전달받아서 예외 객체 생성 OverLength(String message) { super(message); } } public class PrintString { // Overlength 예외를 메소드 호출시 처리하도록 미룸 static void print() throws OverLength { // 스캐너 객체 생성 Scanner sc = new Scanner(System.in); // 문자열 입력 System.out.println("문자열을 입력해주세요."); String str = sc.nextLine(); // 문자열의 길이가 5자 이상일 때 예외 발생 if (str.length() >= 5) throw new OverLength("문자열은 5자 이상 입력할 수 없습니다."); } public static void main(String[] args) { // 예외 처리 try { PrintString et = new PrintString(); print(); // 예외 발생시 예외 정보 출력 } catch (Exception e) { System.out.println(e); } /* 문자열을 입력해주세요. 안녕하세요?? j200205.OverLength: 문자열은 5자 이상 입력할 수 없습니다. */ } }
예외 처리를 메소드 호출로 미루는 throws 예약어와 임의의 예외를 발생시키는 throw 예약어에 대해 알아보았습니다.
두 예약어가 굉장히 비슷하기 때문에 헷갈리지 않도록 해야 하겠습니다.
throws는 그렇게 권장되는 방법은 아니며 주로 try~catch문으로 예외를 처리한다고 합니다.
또한 throw 예약어를 사용하면 예외를 테스트해 볼 수 있기 때문에 발생 가능한 예외를 사전에 점검해 볼 수 있고,
프로그램이 원하지 않는 방향으로 흘러가는 경우에 임의로 예외를 발생시키도록 할 수도 있겠습니다.
'JAVA > JAVA' 카테고리의 다른 글
Java | I/O 표준 입출력 (0) 2020.02.06 Java | I/O(Input / Output) 입출력 개요 (0) 2020.02.06 Java | 예외 처리 try~catch~finally (0) 2020.02.05 Java | Exception 예외 (0) 2020.02.05 Java | Object Type Casting 객체 형 변환 & Instanceof (0) 2020.02.05