弊社の新入社員の子たちにJavaを教えていた後輩から、こういった質問がありましたって聞いた気がしたので自分もアウトプットしておきます。
実際に業務のソースコードを見ると、複数の独自例外クラスを定義している場合が多々あります。例えば、以下の例ではMyException1、MyException2、MyException3がそれにあたります。なぜ独自例外クラスを複数定義するのか?(複数じゃない場合もありますが)
それは、(以下のコメントにもある通り)発生した例外の種類によって処理を分けたいからです。
あまりイメージがわかないかもしれませんが、実際の業務では、発生した例外の種類によって処理を分けたいといったケースが多々あります。そういった理由から独自の例外クラスを複数作っています。
try {
// ~
// 何らかの処理
// ~
} catch (MyException1 e) {
// MyException1が発生した時の処理
} catch (MyException2 e) {
// MyException2が発生した時の処理
} catch (MyException3 e) {
// MyException3が発生した時の処理
} catch (Exception e) {
// 上記の例外以外が発生したけど何らかのハンドリングをしたい時は必要
}