私はJavaが初めてで、例外に関するドキュメントを読んでいました。、特にチェックされていない例外—論争のページ。
一番下の行は言う:
クライアントが例外からの回復が合理的に期待できる場合は、チェック済み例外にします。クライアントが例外から回復するために何もできない場合は、チェックされていない例外にします。
記事がわかりません。「論争」とは何ですか?簡単な言葉で説明できますか?
私はJavaが初めてで、例外に関するドキュメントを読んでいました。、特にチェックされていない例外—論争のページ。
一番下の行は言う:
クライアントが例外からの回復が合理的に期待できる場合は、チェック済み例外にします。クライアントが例外から回復するために何もできない場合は、チェックされていない例外にします。
記事がわかりません。「論争」とは何ですか?簡単な言葉で説明できますか?
回答:
最初に例を挙げましょう(しかし、最後に論争の理由となる答えです)。
Javaベースのドキュメントエディタでドキュメントを編集していると仮定します。完了したら、[ファイル]→[名前を付けて保存]を選択し、書き込み権限のないボリュームにドキュメントを保存することを選択します。エディタは、醜いスタックトレースでクラッシュすることはなく、単にファイルを保存できなかったことを通知するだけで、編集を続行したり、別の場所に保存したりできます。
そのような場合、それはおそらくチェックされた例外が予想され、キャッチされ、それから優雅に回復するように対処されたものです。
一方、これらのゼロ除算、または特定の条件でのみ醜い頭を後回しにするプログラミングエラーによって引き起こされるnullポインター例外を疑います。これは、コードのどこでも発生する可能性があり、RAMが破損している可能性があります。「RAMが破損している場合、このメソッドはゼロによる除算をスローします」という APIドキュメントはありません。
チェックされた例外は設計の一部である必要があり、そのAPIのユーザーはそれらを処理する準備をする必要があります。チェックされていない例外は、ほぼすべての場所で発生する可能性があり、私たちの制御の及ばないものです。
論争は、チェックされた例外を使用する必要がある場合に、プログラマがチェックされていない例外(RuntimeExceptionの拡張)を使用することから発生します。
そのページには論争はありません。オラクルは人々にチェック例外を使用するように指示しています。
彼らがここで発明した偽の「論争」は、言語デザイナーと言語ユーザーの間のものです。デザイナーは、人々が(自分の心の中で)投げたりつかんだりしてはいけないものを投げたり、つかんだりすることを許可しました。それで、彼らは怠惰な開発者について不満を言うウェブページを作成しました。