Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]

[JAVA] throw와 throws 의 차이점

2011. 12. 9. 03:09programming/java

728x90

throw가 예외를 발생시키는 것, throw도 throws도 예외를 던지는 것.

throw는 메소드내에서 상위 블럭으로 예외를 던지는 것.

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

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

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


throws는 메소드나 생성자를 수행할 때 발생하는 exception을 선언할 때 사용하는 keywrod
throws는 예외를 전가시키는 것.
다시 말해 예외를 자신이 처리하지 않고, 자신을 호출하는 메소드에게 책임을 전가 하는 것.

throw는 실제로 exception을 throw할 때 사용하는 keyword입니다.
throw는 강제로 예외를 발생시키는 것

throws는 전가이고

throw 는 프로그래머의 판단에 따른 처리이다.


public void doSomething() throws Exception
{
//...
if (...) {
throw new Exception();
}
//...
}



1. throws

- 메소드를 정의할 때 throws 예약어를 시그내처에 추가하면 그 메소드를 호출하는 곳에서 예외 처리를 해야 한다.
- Function throws SomeException이라는 문장을 생각하면 이해가 쉽다. Function이 SomeException 예외를
던진다는 뜻이므로 Function을 사용하는 곳(호출하는 곳)을 try 블록으로 감싸준다.

01.class Test {
02. public static void f() throws ArithmeticException {
03. int a = 0;
04. a = 10/a;
05. }
06.
07. public static void main(String[] args) {
08. try {
09. Test.f(); // 이 함수가 예외를 던진다.
10. } catch (Exception e) {
11. System.out.println("main() 메소드가 예외를 잡아서 처리한다: " + e);
12. }
13. }
14.}

2. throw
 - 강제로 예외를 발생시키는 경우에 사용한다.
- throw 예약어 뒤에는 java.lang.Throwable 클래스를 상속받은 자식 클래스의 객체를 지정해야 한다.

01.class Test {
02. public static void main(String[] args) {
03. try {
04. throw new Exception();
05. } catch (Exception e) {
06. System.out.println(e);
07. }
08. }
09.}


 
728x90