All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.mogudiandian.util.function.TryCatch Maven / Gradle / Ivy

package com.mogudiandian.util.function;

import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;

/**
 * try-catch 执行的工具类
 * 用于可忽略的异常
 *
 * @author Joshua Sun
 * @since 1.0.13
 */
public final class TryCatch {

    private TryCatch() {}

    /**
     * try-catch 执行并返回
     * @param tryGetter try执行的函数
     * @return try执行成功,则返回try执行的结果,否则返回null
     * @param  返回值类型
     */
    public static  T tryGet(Supplier tryGetter) {
        return tryGet(tryGetter, null);
    }

    /**
     * try-catch 执行并返回
     * @param tryGetter try执行的函数
     * @param defaultValue 如果try执行失败,则返回该值
     * @return try执行成功,则返回try执行的结果,否则返回defaultValue
     * @param  返回值类型
     */
    public static  T tryGet(Supplier tryGetter, T defaultValue) {
        return tryGet(tryGetter, null, defaultValue);
    }

    /**
     * try-catch 执行并返回
     * @param tryGetter try执行的函数
     * @param catcher catch执行的函数
     * @param defaultValue 如果try执行失败,则返回该值
     * @return try执行成功,则返回try执行的结果,否则返回defaultValue
     * @param  返回值类型
     */
    public static  T tryGet(Supplier tryGetter, Consumer catcher, T defaultValue) {
        try {
            return tryGetter.get();
        } catch (Exception e) {
            if (catcher != null) {
                catcher.accept(e);
            }
            return defaultValue;
        }
    }

    /**
     * try-catch 执行并返回
     * @param tryGetter try执行的函数
     * @param catchGetter catch执行的函数
     * @return try执行成功,则返回try执行的结果,否则返回catch执行的结果
     * @param  返回值类型
     */
    public static  T tryCatchGet(Supplier tryGetter, Supplier catchGetter) {
        try {
            return tryGetter.get();
        } catch (Exception e) {
            return catchGetter.get();
        }
    }

    /**
     * try-catch 执行并返回
     * @param tryGetter try执行的函数
     * @param catchGetter catch执行的函数
     * @return try执行成功,则返回try执行的结果,否则返回catch执行的结果
     * @param  返回值类型
     */
    public static  T tryCatchGet(Supplier tryGetter, Function catchGetter) {
        try {
            return tryGetter.get();
        } catch (Exception e) {
            return catchGetter.apply(e);
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy