Java の例外処理は非常にコストがかかるといつも言われていました。
プログラムの最初に特定のタイプの例外インスタンスを作成し、新しいものを作成せずに、常に同じ例外オブジェクトをスローするのが良い方法であるかどうかを尋ねています。
例を作りたいだけです。共通コード:
if (!checkSomething(myObject))
throw new CustomException("your object is invalid");
別:
static CustomException MYEXP = new CustomException("your object is invalid");
//somewhere else
if (!checkSomething(myObject))
throw MYEXP;
もちろん、ここではいくつかの仮定を行っています。
MyCustomException
パラメータがありません- クライアントコードは、良い習慣であるかどうかにかかわらず、例外処理に大きく基づいており、リファクタリングはオプションではありません.
質問は次のとおりです。
- これは良い習慣ですか?
- これは一部の JVM メカニズムに損傷を与えますか?
- 1 が「はい」の場合、パフォーマンスが向上する可能性はありますか? (ないと思いますが、よくわかりません)
- 1 と 3 が「はい」の場合、なぜ実践として後援されないのですか?
- 1 が「いいえ」の場合、Martin Odersky が Scala の紹介で、場合によっては Scala がどのように機能するかを説明したのはなぜですか? (28:30 で、ブレークが実装されていると例外がスローされたと彼は言いました。聴衆はこれには時間がかかると言い、彼は毎回例外が作成されるわけではないと答えました) Fosdem 2009
これが怠惰/愚かな質問ではないことを願っています。私はこれに興味があります。例外処理の真のコストは作成ではなく処理だと思います。
編集 FOSDEM プレゼンテーションに関する正確な議論の参照を追加
免責事項: 私のコードはどれも提案どおりに機能せず、このような例外を管理するつもりはありません。「もしも」の質問をしているだけで、この好奇心はビデオの肯定から生成されます。私は考えました: もしそれが Scala で行われているのなら、なぜ Java ではないのでしょうか?