Java
 Computer >> コンピューター >  >> プログラミング >> Java

コンストラクターはJavaで例外をスローできますか?


はい、コンストラクター Javaで例外をスローすることが許可されています。

コンストラクター は、オブジェクトを初期化するために使用される特殊なタイプのメソッドであり、新しいキーワードを使用してクラスのオブジェクトを作成するために使用されます。 、オブジェクトは Iとも呼ばれます インスタンス クラスの。クラスの各オブジェクトには、独自の状態(インスタンス変数)があります )およびそのクラスのメソッドへのアクセス。

コンストラクタから例外をスローする

  • チェックされた例外 チェックされていない例外がインスタンスを作成しようとしたときに、正当な問題を示すために使用できます。 通常、クライアントコードまたはコンストラクタ自体のバグを示します。
  • どちらの場合も、オブジェクトは実際にはヒープスペースに割り当てられます。 、ただし、それへの参照は返されません。オブジェクトはガベージコレクションされるまで部分的に初期化された状態のままです。したがって、コンストラクター自体からオブジェクトへの参照を保存すると結論付けます( this を使用して) 参照)は、無効な状態のオブジェクトへのアクセスを許可する可能性があるため、危険です。
  • コンストラクターの例外について注意すべきもう1つの重要な点は、リフレクションに関連しています。 。 空のコンストラクターを呼び出す必要がある場合 テストなどのクラスオブジェクトを使用する 、メソッド test.newInstance()を使用することがあります。
  • コンストラクターによってスローされた例外は、変更なしで伝播されます。つまり、 newInstance() メソッドはチェックされた例外をスローする可能性があります 宣言すらしていません。

public class ConstructorExceptionTest {
   public ConstructorExceptionTest() throws InterruptedException {
      System.out.println("Preparing an Object");
      Thread.sleep(1000);
      System.out.println("Object is ready");
   }
   public static void main(String args[]) {
      try {
         ConstructorExceptionTest test = new ConstructorExceptionTest();
      } catch (InterruptedException e) {
         System.out.println("Got interrupted...");
      }
   }
}

出力

Preparing an Object
Object is ready

  1. Javaで抽象クラスのオブジェクトを作成できますか?

    いいえ、抽象クラスのオブジェクトを作成することはできません。ただし、抽象クラスの参照変数を作成することはできます。参照変数は、派生クラス(抽象クラ​​スのサブクラス)のオブジェクトを参照するために使用されます。 抽象クラスとは、実装を非表示にし、関数定義をユーザーに表示することを意味し、抽象クラスと呼ばれます。 Java抽象クラスには、要件がわかっていて、抽象クラスに部分的に実装できる場合に、デフォルトの動作を実装するインスタンスメソッドを含めることができます。 例 abstract class Diagram {    double dim1;    

  2. Javaでカスタム例外を作成するにはどうすればよいですか?

    アプリケーションの要件に基づいて、意味のある例外を開発する必要がある場合があります。 JavaでExceptionクラスを拡張することで、独自の例外を作成できます Javaでのユーザー定義の例外は、カスタム例外とも呼ばれます。 例を使用してカスタム例外を作成する手順 CustomExceptionクラスは、このクラスがExceptionクラスを拡張しているカスタム例外クラスです。 ローカル変数メッセージを1つ作成して、例外メッセージをクラスオブジェクトにローカルに保存します。 カスタム例外オブジェクトのコンストラクターに文字列引数を渡します。コンストラクターは、引数文字列をプライベート文