web-dev-qa-db-ja.com

EmptyStacksの新しいRunTimeExceptionを作成する必要があります

ですから、私の仕事は単純に聞こえるかもしれませんが、それは私を困惑させます。インターネットでコードを調べましたが、理解できません。先生が投稿したスライドを理解することもできません。これが私に求められていることです。

EmptyStackExceptionと呼ばれる新しいランタイム例外タイプを作成します。

ただし、メソッド、クラス、変数など、要件を満たすために必要なものを作成する方法がわかりません。 DynamicArrayStackとLinkedStackの実装であるクラスがいくつかあります。 Stackのインターフェース。

どんなポインタも非常に役に立ちます。

ありがとう

Mjall2

9
Mjall2

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);
      }
    }
18
Jim

そのためには、RuntimeExceptionクラスを拡張する必要があります。

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

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

とにかく、次のコードは、独自のRuntimeExceptionを作成する方法を示しています。

public class EmptyStackException extends RuntimeException{

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

}

ソースコード内から、次のステートメントでこれを使用できます。

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

例外に関する詳細については、次のことをお勧めします チュートリアル

5
Matthew

Javaで読みたいと思うかもしれません。 Javaチュートリアル 、特にこれは 例外 についてです。


簡単に言うと、例外は、コードの通常の操作以外のイベントを表す特別な種類のオブジェクトであり、 制御フロー が破壊されます。たとえば、ArrayIndexOutOfBoundsExceptionは、コードが-1などの存在しない配列内の位置にインデックスを付けようとしたことを意味します。

バグとの関連性のために、例外は多くの場合、新しいプログラマーにとって悪い意味合いを持っています。ただし、Javaは オブジェクト指向 であるため、 RuntimeException を拡張して、独自のカスタム例外タイプを作成できます。デバッグとコードの明確化に非常に役立ちます。コードの実行中にカスタム例外をスローするには、次のことを行う必要があります。

  1. カスタム例外を定義しました、
  2. 例外的な状態を検出し、
  3. throw例外。

カスタムRuntimeExceptionを定義する簡単な方法は、次のようなクラスを定義することです。

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

次に、次のようにExceptionを検出してスローします。

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

これらは単なる基本です。カスタム例外を定義することもできます オンザフライ 。お役に立てれば!

1
paislee