S SmartDocs
Series: Springboot java 26 lines · Updated 2026-08-14

ResourceNotFoundException.java

Springboot/bookstore-api/src/main/java/com/example/bookstore/exception/ResourceNotFoundException.java

package com.example.bookstore.exception;

/**
 * 「查無資料」的自訂例外,最終會被轉成 HTTP 404 Not Found。
 *
 * 【設計理念】
 * Service 層發現資料不存在時,直接拋出這個例外即可,
 * 不需要層層回傳 null 或 boolean。
 * GlobalExceptionHandler 會統一攔截並轉成 404 JSON 回應,
 * 讓 Controller / Service 的主要邏輯保持乾淨。
 *
 * 繼承 RuntimeException(非受檢例外):
 * 呼叫端不必強制 try-catch,交給全域例外處理器即可。
 */
public class ResourceNotFoundException extends RuntimeException {

    /**
     * @param resourceName 資源名稱(例如「書籍」)
     * @param fieldName    查詢欄位(例如「id」)
     * @param fieldValue   查詢值(例如 99)
     * 組出訊息:「找不到書籍:id = '99'」
     */
    public ResourceNotFoundException(String resourceName, String fieldName, Object fieldValue) {
        super("找不到%s:%s = '%s'".formatted(resourceName, fieldName, fieldValue));
    }
}

Related articles