1. 程式人生 > >靜音模式【其他模式】

靜音模式【其他模式】

靜音模式

public class Mute {
    /**
     * Mute Pattern【靜音模式】:
     * 提供一個模板來抑制任何宣告但不能發生或只能被記錄的異常,當在執行某些業務邏輯時,
     * 該模板消除了編寫重複的 try-catch 塊的需要。
     */
    @Test
    public void all() {
        MuteExecutor.syncExecute(() -> {
            throw new RuntimeException("muted");
        });
    }
}

interface Action {
    void execute();
}

@Slf4j
final class MuteExecutor {
    public static void syncExecute(Action action) {
        try {
            action.execute();
        } catch (final Exception e) {
            log.error("靜默處理異常", e);
        }
    }

    public static void asyncExecute(Action action) {
        try {
            CompletableFuture.runAsync(action::execute);
        } catch (final Exception e) {
            log.error("靜默處理異常", e);
        }
    }
}