Javaエンジニアとして転職市場で評価されるスキルの一つが、「実務で通用する例外処理の設計と実装」です。try-catchを使えるだけでは不十分で、例外の種類・流し方・ログ記録・再スローの設計ができて初めて「現場で使える」スキルと評価されます。
この記事では、現場でよく使われるJavaの例外処理パターンと実装例を、中級者向けに解説します。
なぜ例外処理が転職で評価されるのか?
1. 保守性と信頼性を担保する
例外処理は、システムの信頼性・可用性に直結する部分です。雑な例外処理は、思わぬバグやサービス停止につながります。
2. コードレビューで差がつく
例外処理の設計は、設計力やプロジェクト理解度の高さを示す指標となり、転職面接やコードテストでも見られやすい部分です。
現場で使われるJava例外処理の設計方針
1. チェック例外と非チェック例外の使い分け
- チェック例外(Checked Exception)
→ ビジネス上対応すべきエラー(例:ファイルが存在しない、DB接続不可) - 非チェック例外(Unchecked Exception)
→ プログラミングミスや致命的エラー(例:NullPointerException)
実務では、外部依存(ファイル・DB・APIなど)に対してチェック例外を使うのが一般的です。
実装例①:業務エラーとシステムエラーの分離
public class BusinessException extends Exception {
public BusinessException(String message) {
super(message);
}
}
public class SystemException extends RuntimeException {
public SystemException(String message, Throwable cause) {
super(message, cause);
}
}
実装例②:例外のラッピングと再スロー
public class UserService {
private final UserDao userDao;
public UserService(UserDao dao) {
this.userDao = dao;
}
public User getUserById(String id) throws BusinessException {
try {
return userDao.findById(id);
} catch (SQLException e) {
// ログに出力して、業務例外に変換
LoggerFactory.getLogger(UserService.class).error("DBエラー", e);
throw new BusinessException("ユーザー情報の取得に失敗しました");
}
}
}
実装例③:Controller層での一括例外ハンドリング(Spring Boot)
Spring Bootでは、以下のように@ControllerAdviceで例外処理を共通化できます。
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(BusinessException.class)
public ResponseEntity<String> handleBusinessException(BusinessException ex) {
return ResponseEntity.badRequest().body(ex.getMessage());
}
@ExceptionHandler(SystemException.class)
public ResponseEntity<String> handleSystemException(SystemException ex) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body("予期しないエラーが発生しました");
}
}
実務で使えるテクニックまとめ
テクニック | 解説 |
---|---|
例外クラスのカスタム化 | エラーの種類を明確にし、再利用性を高める |
ログ出力の一元化 | 後から調査しやすいログ設計が重要 |
再スローで粒度を調整 | 外部層に適切なレベルでエラーを伝える |
Springの例外制御アノテーション | コントローラー層の肥大化を防ぐ |
転職で評価される「例外処理設計」スキルとは?
- なぜ例外が発生するか?を想定できる力
- 読みやすく、保守しやすい設計(ログ、コメント)
- 「全体の責務」に合った例外の使い分けができるか
たとえば、「データベースエラーをそのまま画面に出してはいけない」「ユーザーに表示するメッセージは業務文脈に合ったものにする」など、例外処理は“業務理解力”と“設計力”の両方を示すポイントです。
まとめ:例外処理の実装力があなたの価値を高める
Javaでの例外処理は、単なる構文ではなく設計力の現れです。現場では、例外処理の粒度、ログ設計、再スローの妥当性などがしっかり見られます。
転職で一歩リードしたいなら、この記事で紹介した実務的な例外処理の考え方と実装パターンをしっかり身につけましょう。