feat(core-extension): Add extension functions for exception handling and enumeration transformations

- Added tryOrNull and tryOrFallBack extension functions for graceful exception handling
- A new enumValueOfOrNull extension function is added to safely convert strings to enumerated values
- Rename Logger.kt to LoggerExtensions.kt to better reflect its role as a log extension class
- Updated build.gradle.kts to change slf4j-api dependencies to compileOnly to reduce runtime dependencies
This commit is contained in:
gewuyou 2025-05-29 22:43:24 +08:00
parent ab035cce14
commit 48eab9c7db
4 changed files with 34 additions and 7 deletions

View File

@ -1,4 +1,4 @@
dependencies { dependencies {
val libs = rootProject.libs val libs = rootProject.libs
implementation(libs.slf4j.api) compileOnly(libs.slf4j.api)
} }

View File

@ -0,0 +1,11 @@
package com.gewuyou.forgeboot.core.extension
/**
* 尝试将给定的字符串转换为指定枚举类型的枚举值
* 如果转换失败或输入字符串为空则返回null
*
* @param name 要转换为枚举值的字符串名称可以为空
* @return 成功转换的枚举值如果失败则返回null
*/
inline fun <reified T : Enum<T>> enumValueOfOrNull(name: String?): T? =
try { enumValueOf<T>(name ?: "") } catch (_: Exception) { null }

View File

@ -0,0 +1,22 @@
package com.gewuyou.forgeboot.core.extension
/**
* 尝试执行一段代码块如果执行过程中抛出异常则返回null
* 使用inline避免额外的函数调用开销对于性能敏感的场景特别有用
*
* @param block 一个lambda表达式代表尝试执行的代码块
* @return 成功执行的结果或者如果执行过程中抛出异常则返回null
*/
inline fun <T> tryOrNull(block: () -> T): T? =
try { block() } catch (_: Exception) { null }
/**
* 尝试执行一段代码块如果执行过程中抛出异常则返回一个预设的备选值
* 同样使用inline关键字以减少性能开销
*
* @param fallBack 备选值如果代码块执行过程中抛出异常则返回该值
* @param block 一个lambda表达式代表尝试执行的代码块
* @return 成功执行的结果或者如果执行过程中抛出异常则返回备选值
*/
inline fun <T> tryOrFallBack(fallBack: T, block: () -> T): T =
try { block() } catch (_: Exception) { fallBack }

View File

@ -2,12 +2,6 @@ package com.gewuyou.forgeboot.core.extension
import org.slf4j.Logger import org.slf4j.Logger
import org.slf4j.LoggerFactory import org.slf4j.LoggerFactory
/**
*日志扩展类
*
* @since 2025-01-02 12:49:13
* @author gewuyou
*/
/** /**
* 日志扩展 * 日志扩展