Added hasThrowable, throwable, resultOrThrowable function in HookParam

This commit is contained in:
2022-07-30 00:22:35 +08:00
parent 34d7d00b87
commit 5b9a176924
3 changed files with 102 additions and 1 deletions

View File

@@ -118,6 +118,54 @@ var result: Any?
> 获取、设置当前 Hook 对象的 `method` 或 `constructor` 的返回值。
### hasThrowable [field]
```kotlin
var hasThrowable: Boolean
```
**变更记录**
`v1.0.93` `新增`
**功能描述**
> 判断是否存在设置过的方法调用抛出异常。
### throwable [field]
```kotlin
var throwable: Throwable?
```
**变更记录**
`v1.0.93` `新增`
**功能描述**
> 获取、设置方法调用抛出的异常。
仅会在回调方法的 `MemberHookCreater.beforeHook` or `MemberHookCreater.afterHook` 中生效。
你可以使用 `hasThrowable` 判断当前是否存在被抛出的异常。
!> 设置后会同时执行 `resultNull` 方法并将异常抛出给当前宿主 APP。
### resultOrThrowable [field]
```kotlin
var resultOrThrowable: Any?
```
**变更记录**
`v1.0.93` `新增`
**功能描述**
> 获取 `result` 或 `throwable`,存在 `throwable` 时优先返回。
### result [method]
```kotlin

View File

@@ -30,6 +30,7 @@
package com.highcapable.yukihookapi.hook.param
import com.highcapable.yukihookapi.hook.core.YukiMemberHookCreater
import com.highcapable.yukihookapi.hook.core.YukiMemberHookCreater.MemberHookCreater
import com.highcapable.yukihookapi.hook.param.wrapper.HookParamWrapper
import java.lang.reflect.Constructor
import java.lang.reflect.Member
@@ -108,6 +109,35 @@ class HookParam internal constructor(private val createrInstance: YukiMemberHook
wrapper?.result = value
}
/**
* 判断是否存在设置过的方法调用抛出异常
* @return [Boolean]
*/
val hasThrowable get() = wrapper?.hasThrowable
/**
* 获取、设置方法调用抛出的异常
*
* 仅会在回调方法的 [MemberHookCreater.beforeHook] or [MemberHookCreater.afterHook] 中生效
*
* 你可以使用 [hasThrowable] 判断当前是否存在被抛出的异常
*
* - ❗设置后会同时执行 [resultNull] 方法并将异常抛出给当前宿主 APP
* @return [Throwable] or null
* @throws Throwable
*/
var throwable: Throwable?
get() = wrapper?.throwable
set(value) {
wrapper?.throwable = value
}
/**
* 获取 [result] 或 [throwable] - 存在 [throwable] 时优先返回
* @return [Any] or [Throwable] or null
*/
val resultOrThrowable get() = wrapper?.resultOrThrowable
/**
* 获取当前 Hook 对象的 [method] or [constructor] 的返回值 [T]
* @return [T] or null

View File

@@ -71,7 +71,7 @@ class HookParamWrapper internal constructor(private var baseParam: XC_MethodHook
val args: Array<Any?>? get() = baseParam?.args
/**
* 方法、设置方法结果
* 获取、设置方法结果
* @return [Any] or null
*/
var result: Any?
@@ -80,6 +80,29 @@ class HookParamWrapper internal constructor(private var baseParam: XC_MethodHook
baseParam?.result = value
}
/**
* 判断是否存在设置过的方法调用抛出异常
* @return [Boolean]
*/
val hasThrowable get() = baseParam?.hasThrowable() ?: false
/**
* 获取、设置方法调用抛出的异常
* @return [Throwable] or null
* @throws Throwable
*/
var throwable: Throwable?
get() = baseParam?.throwable
set(value) {
baseParam?.throwable = value
}
/**
* 获取 [result] 或 [throwable] - 存在 [throwable] 时优先返回
* @return [Any] or null
*/
val resultOrThrowable get() = baseParam?.resultOrThrowable
/**
* 设置方法参数
* @param index 数组下标