개발의 시작과 끝

2020.05.30 / Day - 45 자바 throw, throws 본문

풀스택/자바 공부, 복습

2020.05.30 / Day - 45 자바 throw, throws

개발지혜 2020. 5. 30. 17:07

45일차

 

throw

메소드내에서 상위 블럭으로 예외를 던지는 것으로, 프로그래머의 판단에 따라 처리한다.

억지로 에러를 발생시킬 때도 사용되지만 현재 메소드의 에러를 처리한 후에

상위 메소드에 에러 정보를 줌으로써 상위메소드에서도 에러가 발생한 것을 감지할 수 있다.

예제

public class Main {
	public static void main(String[] agrs) {
    	try {
        	throw new Exception(); // 강제로 Exception 객체 생성
        } catch(Exception e) {
        	System.out.println("예외를 강제로 발생했습니다.");
        }
    }
}

출력 : 예외를 강제로 발생했습니다.

 

 

throws

현재 메소드 내에서 상위 메소드로 예외를 던진다.

메소드나 생성자를 수행할 때 발생하는 Exception을 선언할 때 사용하는 keyword로

예외를 전가시켜 예외를 자신이 처리하지 않고, 자신을 호출하는 메소드에게 책임을 전가 하는 것이다.

예제

import com.sun.jdi.NativeMethodException;

public class Main {
	public static void main(String[] agrs) {
    Test test = new Test();

    	try {
        	test.test("1", "ㄱ"); // 숫자를 넘겨주어야 하지만 숫자와 문자를 넘겨준다.
        } catch(NumberFormatException e) {
        	System.out.println("입력하신 값은 숫자가 아닙니다.");
        }
    }
}

class Test {
  public void test(String a, String b) throws NumberFormatException {
    // 문자로 받은 a와 b의 문자를 숫자로 변환하여 더한다.
    // 하지만 문자를 받을시 형변환 과정에서 NumberFormatException이 발생한다.
    int sum = Integer.parseInt(a) + Integer.parseInt(b);

    //문자로 받은 숫자 2개의 합을 출력한다.
    System.out.println("문자로 입력받은 " + a + "," + b + "의 합은 " + sum + "입니다.");
  }
}

출력 : 입력하신 값은 숫자가 아닙니다.

 

 

참조

- https://bvc12.tistory.com/196

- https://vitalholic.tistory.com/246