2014-11-18 1 views
1
public class AccountException extends Exception { 
    public AccountException(String str) { 
     super(str); 
    } 
    } 

이것은 예제 프로그램에서 제일 좋은 클래스입니다. 내가 이해하지 못하는 이유는 우리가 슈퍼 키워드를 사용하는 이유입니다. 내가 알고있는 예외 클래스 에서이 클래스를 확장하지만 예외에 대한 메서드를 만들 이해가 안돼. 우리가 예외를 잡을 때 어떤 일이 일어날 것인가?예외 서브 클래스에서`Super` 키워드의 효과

내 질문에 대한 답변을 그냥 예외 (문자열 메시지)를 호출 지정된 세부 메시지를 사용하여 새 예외를 구성합니다. 이것은 우리 자신의 예외 클래스를 만드는 예제입니다.

+1

'슈퍼'는 예외 처리와 어떻게 관련이 있다고 생각하십니까? –

+1

https://docs.oracle.com/javase/tutorial/java/IandI/super.html – ha9u63ar

+0

@SotiriosDelimanolis이 클래스는 예외로부터 확장되므로 예외 처리와 관련이 있다고 생각합니다. – gula93

답변

0

귀하의 질문은 Exception과 관련이 없습니다.

클래스가 있으므로 클래스를 사용하거나 자신의 이익을 위해 더 유용하게 사용할 수 있습니다 (대부분의 경우). Exception은 표준 Java 라이브러리의 또 다른 클래스이며 모델링하려고하는 Exception의 종류에 따라 Checked 또는 Unchecked 일 수 있습니다. Oracle's documentation의 예외에 대해 읽어보십시오.

"최고"키워드 사용은 SO 및 기타 Java 프로그래머 사이트에서 인기있는 주제였습니다. 나는이 말을 다시 반복하여이 쓰레기를 오염시키지 않을 것이다. 요약하면 "하위 클래스가 필요합니다. super이 필요합니다. 필요하지 않습니다."

예외를 catch하면 어떤 일이 발생합니까? 실제로는 try{...} catch(Exception e) 블록을 사용하면 실제로 Exception 객체를 잡습니다. 자신의 예외 클래스를 "DontKnowException"라고 가정합니다. 다음 작업을 수행 할 경우주의 깊게 코드를 보면

try { 
    // My code 

} catch (Exception e) { 
    // Print stack trace 
    // Do whatever you want using "Exception" object e 
} 

, 어디는 "DontKnowException"개체를 잡는 것을 말하고있다? 대답은 - 아무데도 없습니다. 하지만 당신은 "Exception"객체를 잡고 있습니까? 그렇습니다. 세속적 인 (어리석은) 예 - "할아버지는 자전거가 있지만 차가 없어요, 아빠는 자전거와 차가 있어요 할아버지, 제가 차를 마실 수 있을까요? 아니요.

Java SO 사용자도 동의하므로 예외가 "선택 취소됨"카테고리 인 경우 try-catch를 수행해야합니다. 귀하의 예외가 "선택 취소"되어 있다면 왜 super를 사용하여 귀찮게합니까 ?? 그럼 좋은 연습일지도 몰라?

자신 만의 Exception 클래스를 작성하길 강력히 권하는 경우, 체크되지 않은/확인 된 예외를 처리하는지 여부를 이해하는 것이 좋습니다. 클래스를 작성한 후에 예외 Exception이 아닌 Exception 클래스 객체를 잡아라.

0

super을 사용하면 수퍼 클래스 생성자를 호출합니다. 이것은 예외 사항과 관련이 없습니다.

관련 문제