# 成功判定与返回值 >[info] 对于监听函数的执行结果的成功判定,目前框架内部存在两种方案针对两种不同类型的监听函数。 ## 首先 >[warning] 首先,无论什么情况下,只要函数抛出了异常,则必定判定为执行失败。 <br> ## 标注了@ListenBody时 >[success] 当监听函数标注了 `@ListenBody` 注解,则只要函数不抛出异常,则会永远判定为执行成功,并将函数的返回值直接作为响应值响应给插件。在响应的时候,会将响应值对象转化为`json`格式。 <br> ## 未标注@ListenBody时 >[success] 当监听函数没有标注 `@ListenBody` 注解,则判定规则如下: | 返回值类型 | 判定方案 | 响应值 | | --- | --- | --- | | `null` | 当结果为null,则判定为失败 | `null` | | `ListenResult` | 以此`ListenResult`的结果为准 | 以此`ListenResult`的结果为准 | | `Boolean` | 布尔类型代表是否成功。`true`:成功,`false`:失败 | `null` | | `Number` | 数字类型,大于等于0则为成功,小于0则为失败 | `null` | | 其他类型 | 其他任意类型,只要不为null则判定成功 | 函数返回值本身(转为JSON) |