2012-03-21 10 views
7

私の仕事は単純なように聞こえるかもしれませんが、それは私には不安があります。 私はインターネット上でコードを見てきましたが、私は把握できません。教師が投稿したスライドをグリップすることもできません。 これは私から要求されるものです。EmptyStacksの新しいRunTimeExceptionを作成する必要があります

EmptyStackExceptionという新しい実行時例外タイプを作成します。

しかし、私は方法、クラス、変数などを作成する方法がないので、要件を満たすために何かを作る必要があります。 私はDynamicArrayStackとLinkedStackの実装であるいくつかのクラスを持っています。スタック用のインタフェース。

すべてのポインタが大いに役に立ちます。

おかげ

Mjall2

答えて

15

EmptyStackExceptionと呼ばれる新しいランタイム例外タイプを作成します。唯一の私たちは、この新しいタイプ(別称、クラス)に置くことを知っていた場合

作成タイプは今

public class EmptyStackException extends RuntimeException { ... } 

によって行われます。 通常、スーパークラスのメソッドを見て、異なる処理が必要なメソッドをオーバーライドします。以下では、それらの一部をオーバーライドしましたが、既存のクラスに委譲しました。行動を変更する必要がない場合は、これを行う必要はありません。

public class EmptyStackException extends RuntimeException { 
     public EmptyStackException() { 
      super(); 
     } 
     public EmptyStackException(String s) { 
      super(s); 
     } 
     public EmptyStackException(String s, Throwable throwable) { 
      super(s, throwable); 
     } 
     public EmptyStackException(Throwable throwable) { 
      super(throwable); 
     } 
    } 
+0

super()を呼び出すと、実行時例外をスローするRuntimeExceptionのコンストラクタが呼び出されます。 – Mjall2

+2

super()を呼び出すと、* RuntimeExceptionを構築する必要があります*例外をスローしません*。 – Jim

+0

しかし、私たちが1つを投げたいときは、 throw EmptyStackException(); これは私が信じるruntimeexceptionをスローするでしょうか? – Mjall2

1

あなたはJavaで読んでみたいと思うかもしれません。 The Java Tutorials、特にこれは約Exceptionsです。


簡単に言えば、例外はcontrol flowを堕落させる、あなたのコードの正常な動作の外にイベントを表すオブジェクトの特別な種類です。たとえば、ArrayIndexOutOfBoundsExceptionは、存在しない配列の-1のような位置にコードをインデックスしようとしたことを意味します。

バグとの関連性のために、例外は新しいプログラマーには間違った意味を持つことがよくあります。しかし、JavaがObject Orientedであるため、RuntimeExceptionを拡張して独自のカスタム例外タイプを作成することができます。これは、デバッグやコードの明快さに非常に役立ちます。コードの実行中にカスタム例外をスローするには、(1)カスタム例外を定義し、(2)例外条件を検出し、(3)throw例外を定義する必要があります。

public EmptyStackException extends RuntimeException { 
    // customize error messages if necessay 
} 

は、その後、あなたが検出したいとExceptionのように投げる:

if (/** stack is empty */) { 
    throw new EmptyStackException(); 
} 

これらは単なる基本です

カスタムRuntimeExceptionを定義するための簡単な方法は、のようなクラスを定義することです。カスタム例外on the flyを定義することもできます。お役に立てれば!

3

これを実行するには、クラスRuntimeExceptionを拡張する必要があります。

Javaには、チェックされていない例外とチェックされている例外の2つのタイプがあります。 RuntimeExceptionsは2番目のタイプです。つまり、明示的に処理および宣言する必要はありません。

通常、カスタム例外を書き込むときには、チェック例外を使用します。これは、クラスExceptionを拡張することによって行われます。カスタムRuntimeExceptionを作成するためのユースケースはありません。例外の詳細については

throw new EmptyStackException("Stack was Empty, can't pop"); 

:あなたは次の文で、これを使用することができ、あなたのソースコード内から

public class EmptyStackException extends RuntimeException{ 

    public EmptyStackException(String message){ 
     super(message); 
    } 

} 

:とにかく

は、次のコードは、独自のRuntimeExceptionを作成する方法を示していTutorial

関連する問題