Exceptions
現在取り組んでいるプロジェクトのために、自分のセットを実装したいと思っています。プロジェクトは、基本フレームワークの例外を除いてコアフレームワークに依存していますMyFrameworkException
(私もこのフレームワークを書いています)。
特定のプロジェクトについて、いくつかの異なるタイプをスローしたいのですが、コンストラクターパラメーターとしてExceptions
複数のサブクラスを使用するか、何らかの形式の単一のサブクラスを使用するかを決定できません。Enum
どちらの場合も、私は次のことを行っています。
public class MyFrameworkException extends Exception { /*...*/ }
オプション1:
public class MyProjectBaseException extends MyFrameworkException { /*...*/ }
public class SpecificExceptionType1 extends MyProjectBaseException { /*...*/ }
public class SpecificExceptionType1 extends MyProjectBaseException { /*...*/ }
public class SpecificExceptionType1 extends MyProjectBaseException { /*...*/ }
次に、プロジェクト全体で、発生した問題に対して特定の例外をスローします。
オプション2:
public class MyProjectException extends MyFrameworkException {
public static enum Type {
SpecificType1, SpecificType2, SpecificType3
}
public MyProjectException( Type type ) { /*...*/ }
}
MyProjectException
ここでは、発生する問題に対して常に特定の列挙型を使用してスローします。MyProjectException
列挙型に基づいてswitchステートメントを実行できるようにするためのメカニズムを提供します。
プロジェクト、特に共通のインフラストラクチャを共有しているプロジェクトの例外を処理するための最良の方法は何ですか?上記の2つのオプションは良い解決策ですか?なぜまたはなぜそうではないのですか?そして、より良い解決策は何ですか?