2013-10-20 2 views
1

나는 런타임 예외를 던지려고하는 클래스를 작성했습니다.런타임 예외가 발생할 수 있습니까?

public class ExceptionTest 

{ 

    public static void ReadFile() throws RuntimeException, FileNotFoundException{ 
    try{ 

    BufferedReader b =new BufferedReader(new FileReader("I:\\Workspace\\Basic Java\\bin\\Exceptions\\List To Read.txt")); 
    String s = b.readLine(); 
    while(s!=null){ 
     System.out.println(s); 
     s=b.readLine(); 
    } 
    } 
    catch(RuntimeException e){ 
     throw e; 
    } 
    catch(FileNotFoundException e){ 
     throw e; 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    } 

을 다음과 그리고 우리는 런타임 예외를 던질 수있다 내 메인 클래스가

public class TheMain { 
public static void main(String args[]){ 
    ExceptionTest.ReadFile(); 
} 
} 

내 의심처럼 보이는 코드는 무엇입니까? 도와주세요

+3

예 가능합니다. Throwable을 확장하는 모든 것을 던질 수 있습니다 - javadocs를 확인하십시오. – Augusto

+1

런타임 예외로부터 복구 할 수없는 경우 – upog

+0

http://docs.oracle.com/javase/6/docs/api/java/lang/RuntimeException.html – Spiff

답변

1

정상적인 예외이기 때문에 java.lang.RuntimeException (또는 파생 예외)을 던질 수 있습니다. 다른 예외와의 차이점은 메소드가 던질 수있는 예외의 목록에서이를 언급 할 필요가 없다는 것입니다.

public void foo(int bar) throws RuntimeException { 
    throw new RuntimeException("foo(bar)"); 
} 

public void foo(int bar) { 
    throw new RuntimeException("foo(bar)"); 
} 
그럼에도 불구

하는 java.lang.RuntimeException (또는 어떤 파생) 일반 예외처럼 동작과 동일한 효과를 갖는다. 적발되지 않으면 프로그램을 종료합니다.

3

RunTimeExceptionunchecked exception입니다. 이 메소드가 체크되지 않은 예외를 던질 수 있다는 것을 API 사용자에게 명시 적으로 지정하지 않으려는 경우에는 예외를 던질 수 있지만 꼭 그렇게 할 필요는 없습니다. 그러나이 방법에 대한 javadoc에이 사실 (이 메소드가 RunTimeException을 던질 수 있음)을 언급하면 ​​이것이 필요하지는 않은 것으로 보입니다.

그래서, 그래, 당신이 그것을 던질 수 있지만, 그것은 당신에게 주어진 이점을 제공하지 않는 한에있는 당신에게 코드

3

throw new RuntimeException('someMessagehere')

-1
의 몇 가지 추가 라인을 비용하지 않는, 짧은

이상적으로 런 타임 예외는 고의적으로 던져서는 안됩니다. Java는 Checked Exception 및 Unchecked 런타임 예외에서 예외를 분류했습니다. 항상 예외 검사를 던져야합니다. 프로그램되지 않은 예외는 던져서가 아니라 프로그래밍 방식으로 처리해야하기 때문에 프로그램에서 절대로 발생해서는 안됩니다.

+0

이것은 강한 의견입니다. Checked Exceptions이 나쁜 아이디어 인 이유에 대해 좋은 주장이 많습니다. – Ben

+0

Checked Exception은 클라이언트 (호출 시스템)가 예외 상황을 처리하고 적절한 시나리오에 대해 적절한 오류 메시지를 표시하도록합니다. Checked Exception이 나쁜 아이디어 인 이유에 대해 좋은 논증을 알고 싶습니다. – Rakesh

+0

Google에 대한 많은 리소스가 있습니다 (예 : https://blog.philipphauer.de/checked-exceptions-are-evil/). . 나는 반드시 체크 예외가 완전히 악한 것임을 확신시키려는 것은 아니지만 ... "이상적으로 런타임 예외는 결코 의도적으로 던져서는 안된다"는 귀하의 진술에 강력히 동의하지 않습니다. – Ben

관련 문제