2014-01-09 2 views
-1

나는 안드로이드 프로젝트에서 일하고 있는데, 나는 예외를 호출 스레드로 던지는 방법을 알아 내려고 노력하고있다.예외를 던지고 예외를 호출하는 방법

내가 가진 것은 활동이며 사용자가 단추를 클릭하면 다른 Java 클래스 (활동, 표준 클래스가 아님) 내의 스레드 함수를 호출합니다. 표준 클래스 내의 메소드는 IOException 또는 Exception을 던질 수 있습니다. 예외 객체가 반환 된 것을 기반으로 액티비티가 몇 가지 작업을 수행 할 수 있도록 액티비티 내에서 호출하는 메소드에 예외 객체를 다시 던져야합니다. 다음은

내 활동 코드 :

다음
private void myActivityMethod() 
{ 
    try 
    { 
     MyStandardClass myClass = new MyStandardClass(); 
     myClass.standardClassFunction(); 
    } 
    catch (Exception ex) 
    { 
     Log.v(TAG, ex.toString()); 
     //Do some other stuff with the exception 
    } 
} 

내가 예외 throw ex을 넣어 내 표준 클래스 기능

private void standardClassFunction() 
{ 
    try 
    { 
     String temp = null; 
     Log.v(TAG, temp.toString()); //This will throw the exception as its null 
    } 
    catch (Exception ex) 
    { 
     throw ex; //Don't handle the exception, throw the exception backto the calling method 
    } 
} 

이며, Eclipse는 불행한 것 같다, 대신 서라운드 나에게 묻는다 throw ex 다른 try/catch 내에서, 그 의미, 만약 내가 이렇게하면 두 번째 try/catch 호출 메서드 예외 처리기 내에서 예외가 처리됩니다.

도움을 주셔서 감사합니다.

+0

'예외'는 확인 된 예외입니다. 'NullPointerException'도'Exception'이지만, 좀 더 구체적으로'RuntimeException'은 체크되지 않습니다. –

+2

꽤 표준 자바 물건 ... 그냥 메서드 선언에 Throws를 추가하십시오. – Submersed

+0

http://docs.oracle.com/javase/tutorial/essential/exceptions/catchOrDeclare.html –

답변

2

변경 :

private void standardClassFunction() 
{ 
    try 
    { 
     String temp = null; 
     Log.v(TAG, temp.toString()); //This will throw the exception as its null 
    } 
    catch (Exception ex) 
    { 
     throw ex; //Don't handle the exception, throw the exception backto the calling method 
    } 
} 

당신이 함수를 호출 내에서 호출 기능에 던져 예외를 처리하려면

private void standardClassFunction() throws Exception 
{ 

     String temp = null; 
     Log.v(TAG, temp.toString()); //This will throw the exception as its null 

} 

합니다. 위와 같이 던지기 만하면됩니다.

또한 NullPointerException처럼 검사 된 예외 인 경우 throw를 쓰지 않아도됩니다. 확인하고 체크되지 않은 예외에 대한

더 : 당신이 메서드 서명에 던져 선언 할 때 위에서 언급 한 바와 같이

http://www.geeksforgeeks.org/checked-vs-unchecked-exceptions-in-java/

+1

이 경우 'throws'는 필요하지 않습니다. –

+0

예. 그러나 그의 방법 안에 검사되지 않은 예외가 있다면, 그는 그것을 할 필요가 있습니다. 나는 예를 들어 취했다 –

+0

그 경우, 그것을 설명하는 줄임표 나 설명을 추가해주십시오. –

1

는, 컴파일러는이 메소드가 예외를 던질 수 있다는 것을 알고있다.

이제 다른 클래스의 메서드를 호출하면 try/catch에서 호출을 처리하라는 메시지가 표시됩니다.

관련 문제