2014-02-09 3 views
0

사용자 정의 예외를 작성하여 try-catch에서만 catch 할 수 있습니까? 아니면 throw 문으로 사용자 정의 예외를 throw해야합니까?사용자 Java 키워드를 사용하는시기 사용자 정의 예외에서 예외가 발생합니까?

질문 : throw 키워드를 사용할 때 다소 혼란 스럽습니까? 나는 throw가 사용자 정의 예외와 함께 사용된다고 생각한다.

코드 : 당신은 사용자 정의 여부, 어떤 Exception가 발생 할 때마다

public genericPanel() { 
    try { 
    if (i.length == size) { 
     throw new MyOwnDefinedError("Error - Size is 1 integer 
                   to large"); 
    } 
    for (int index=0;index<=i.length;index++) { 
     System.out.println(i[index]); 
    } 
    } catch (MyOwnDefinedError o) { 
     o.getMessage(); 
    } catch (Exception e) { 
     e.getMessage(); 
    } 
} 

class MyOwnDefinedError extends Exception { 
    MyOwnDefinedError(String myNewString) { 
    super(myNewString); 
} 
+0

. 프로그램 흐름을 중단하고 예외를 throw하려는 경우에'throw'를 사용합니다. –

+0

'catch'키워드를 사용하여 예외를 잡는 방법에 대해 궁금한 점이 있습니까? 예외는 Java Runtime에 의해 생성 될 수 있으며, 호출 한 코드에 의해'throw'n 될 수 있습니다. 또는 사용자가 정의한 예외 또는 미리 정의 된 예외 일 수있는 예외의 인스턴스를 "throw"할 수 있습니다. 그 정보로, 당신이 이해하지 못하는 것을 분명히 할 수 있습니까? –

답변

1

throw를 사용 (자바). MyOwnDefinedError처럼 "미리 정의 된"예외 (예 : IOException) 또는 자체 정의 된 예외 사이에는 차이가 없습니다.

0

java의 throw 키워드는 사용자 정의 예외에 사용됩니다. 예를 들어 은행 계좌 신청을하고 있고 고객의 계좌에서 돈을 인출하려고합니다. 정상적인 경우 금액은 음수가 될 수 없으므로 InvalidAmountException 또는 비슷한 것을 던지십시오.

예외 상황에 밑줄을 긋아야 할 때마다 키워드 자체가 사용되므로, 이미 API에 있거나 사용자가 구현 한 예외를 던지기 위해 throw를 사용합니다.

예외 처리를 위해 - java에서 Exception 클래스를 확장하는 경우 예외는 구체적으로 throws 키워드를 사용하여 메서드 정의에 배치해야합니다. 예외를 런타임에 팝업으로 표시하고 프로그램 실행을 중단하려는 경우 RuntimeException을 확장 할 수 있습니다. 이 경우 예외 처리는 선택 사항이므로 throw와 함께 지정할 필요가 없으며 try/catch 블록을 사용하여 메서드 실행을 래핑 할 필요가 없습니다.

예외에 대한 전체 자습서는 here입니다.

0

당신이 던지는 excepions에 자바 설명서의 대답을 읽을 수 있습니다 http://docs.oracle.com/javase/tutorial/essential/exceptions/throwing.html

당신이 예외를 잡을 수 전에 몇 가지 코드 어딘가에 하나를 던져해야합니다. 코드는 Java 플랫폼과 함께 제공되는 패키지 또는 Java 런타임 환경과 같은 다른 사람이 작성한 코드 의 코드, 예외 코드를 던질 수 있습니다. 아무리 예외가 발생하더라도 throw 문을 사용하여 항상 throw됩니다.

아마도 알았 겠지만 Java 플랫폼은 수많은 예외 클래스를 제공합니다. 모든 클래스는 Throwable 클래스의 자손이며, 모든 프로그램은 프로그램 실행 중에 발생할 수있는 예외 유형을 다양하게 구분할 수 있습니다.

작성한 클래스에서 발생할 수있는 문제점을 나타 내기 위해 자체 예외 클래스를 작성할 수도 있습니다.실제로 패키지 개발자 인 경우 사용자가 패키지에서 발생할 수있는 오류와 Java 플랫폼에서 발생하는 오류 또는 다른 패키지

을 구별 할 수 있도록 자신 만의 예외 집합 클래스를 만들어야 할 수 있습니다
0
  • 예외를 throw하는 데 Throw가 사용됩니다.
  • Throw는 메소드 정의의 일부입니다.
  • 주어진 시점에서 throw 문은 하나의 예외 만 throw 할 수 있습니다.
  • throw 문은 예외 인스턴스로 수정되었습니다. 이해가 안
+0

메서드 정의의 예를 보여줄 수 있습니까? 예를 들어 위와 같은 예외를 확장하는 자체 예외가있는 경우를 예로들 수 있습니다. 메서드 스텁에서 throw를 사용할 때 해당 클래스의 인스턴스 및 인스턴스가 처리되지 않은 예외 오류가 발생합니다. –

0

클래스 테스트 {

void testDivision(float a,float b) 
{ 
if(b=0.0) 
{ 
    try 
    { 
    throw new MathematicalException("Please, do not divide by zero"); 
    } 
    catch (MathematicalException ae) 
     { 
     System.out.println(ae); 
     } 
} 
else 
    { 
    float result=a/b; 
      System.out.println("Result:" + result); 
    }  
} 

public static void main(String args[]) 

{ 
float f1 = Float.parsefloat(args[0]); 
float f2 = Float.parsefloat(args[1]); 

Test t1 = new Test(); 
t1.testDivision(f1,f2); 
} 

class MathematicalException extends Exception 

      { 
       MathematicalException(); 



       MathematicalException(String msg) 
    { 
    super(msg); 
    } 
      } 

}

관련 문제