Oracle Javaチュートリアルで、チェックされた例外とチェックされていない例外が「論争」と呼ばれるのはなぜですか?


10

私はJavaが初めてで、例外に関するドキュメントを読んでいました。、特にチェックされていない例外—論争のページ。

一番下の行は言う:

クライアントが例外からの回復が合理的に期待できる場合は、チェック済み例外にします。クライアントが例外から回復するために何もできない場合は、チェックされていない例外にします。

記事がわかりません。「論争」とは何ですか?簡単な言葉で説明できますか?




更新された質問を見てください。これは重複しているとは思わない:)
ABcDexter '20

3
「私はそれを読もうとした」 -何が起こったのですか?
役に立たない

2
その話題に関して多くの論争があるのでそれはそのように呼ばれます。このStackOverflowの質問も参照してください:有名な/影響力のある人々のいくつかの引用に言及しているチェック例外に対するケース
Hulk

回答:


3

最初に例を挙げましょう(しかし、最後に論争の理由となる答えです)。

Javaベースのドキュメントエディタでドキュメントを編集していると仮定します。完了したら、[ファイル]→[名前を付けて保存]を選択し、書き込み権限のないボリュームにドキュメントを保存することを選択します。エディタは、醜いスタックトレースでクラッシュすることはなく、単にファイルを保存できなかったことを通知するだけで、編集を続行したり、別の場所に保存したりできます。

そのような場合、それはおそらくチェックされた例外が予想され、キャッチされ、それから優雅に回復するように対処されたものです。

一方、これらのゼロ除算、または特定の条件でのみ醜い頭を後回しにするプログラミングエラーによって引き起こされるnullポインター例外を疑います。これは、コードのどこでも発生する可能性があり、RAMが破損している可能性があります。「RAMが破損している場合、このメソッドはゼロによる除算をスローします」という APIドキュメントはありません。

チェックされた例外は設計の一部である必要があり、そのAPIのユーザーはそれらを処理する準備をする必要があります。チェックされていない例外は、ほぼすべての場所で発生する可能性があり、私たちの制御の及ばないものです。

論争は、チェックされた例外を使用する必要がある場合にプログラマがチェックさていない例外(RuntimeExceptionの拡張)を使用することから発生します。

  • コンパイラーに邪魔されないショートカットとして
  • 署名をシンプルに見せるため
  • チェック済みの例外は依存関係の問題であると見なしているため(実装しているクラスで新しいチェック済みの例外をスローする場合は、インターフェイスのシグネチャを変更する必要があります)、その逆も同様です。

「インターフェイスのシグネチャを変更する必要があります」-まあ、あなたはコンパイラによってそうすることを余儀なくされ、各呼び出しサイトでスローされるようにそれを処理または宣言する必要があります。
ハルク

3
UIアプリケーションがユーザーフレンドリーな方法でエラーを適切に処理するかどうかは、プログラマーがコードをどの程度適切に記述したかに基づいています。他の誰かがチェックされた例外でエラーを不適切に処理できるのと同じように、チェックされていない例外を使用して、コードをそのようにうまく書くことができます。チェック例外の目的は、プログラマがエラーを適切に処理しやすくすることです。論争はあなたがここで主張したものではなく、実際にエラー処理をより簡単にするという目標を実際に首尾よく達成したかどうかです。多くの見解では、彼らはそうしません。彼らはそれを難し​​くします。
サービー

@Servyユーザーフレンドリーな方法で、UIアプリは、RAMチップの障害、または別のソフトウェアが誤動作したためにCPUサイクルが残っていないという事実を処理できますか?
TulainsCórdova16年

1
TulainsCórdovaのいずれかで、これらの例のプログラムでもするつもりはない@ 実行し、そうであること済取り扱いも例外が存在しない期間は、あなたがこれまでにも、あなたのいずれかを実行することができないときに、あなたがエラーを表現しようとどのように関係ありませんそれが発生したときにコード。
サービー

1
@TulainsCórdovaエラーを処理するために必ずしもエラーに遭遇する必要はありませんが、はい、コンパイラーはそれがスローされる可能性があることを通知しません。論争は、例外がスローされる可能性があることをコンパイラが通知することが実際に役立つかどうかです。そうだと思う人もいれば、そうではないと思う人もいます。ここでの問題は論争とは何かであり、それが答えです。チェック例外の主要な論争はあなたの声明ではありません。
サービー

-4

そのページには論争はありません。オラクルは人々にチェック例外を使用するように指示しています。

彼らがここで発明した偽の「論争」は、言語デザイナーと言語ユーザーの間のものです。デザイナーは、人々が(自分の心の中で)投げたりつかんだりしてはいけないものを投げたり、つかんだりすることを許可しました。それで、彼らは怠惰な開発者について不満を言うウェブページを作成しました。


4
そこそのページはそれについて少し言っても論争が。「チェックされた例外はより優れたソフトウェアの開発に役立つか、それとも妨げになるか」という質問に対する答えは、論争の的になっているものです。そして、「そうである場合、どの例外をチェックする必要があり、どの例外をチェック解除する必要がありますか?」十分な数の開発者(およびビール)が部屋に集まって、これらの質問に答える場合は、活発な議論を始めることができると思います。
ソロモンスロー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.