You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CodenameOne中使用Terse REST API捕获HTTP 404错误

在Codename One中用Terse REST API自定义处理HTTP 404错误

你现在遇到的问题是Terse REST默认会接管4xx/5xx这类错误的处理,直接弹出标准错误提示,而你想要自定义404的提示信息对吧?别担心,有两种简单的方法可以实现这个需求:

方法一:使用onError回调拦截错误

你可以在请求链中加入onError方法,专门捕获错误响应,判断状态码后自定义处理,代码示例如下:

Response<Map> jsonData = Rest.get(URL + "lookup")
    .jsonContent()
    .queryParam("account", accountNo)
    .onError(response -> {
        if (response.getResponseCode() == 404) {
            // 显示你自定义的提示框
            Dialog.show("提示", "该账户不存在,请检查账号后重试", "确定", null);
            return true; // 返回true告诉框架:这个错误我们已经处理了,不用再走默认流程
        }
        return false; // 其他错误交给默认处理器处理
    })
    .getAsJsonMap();

这个方法的好处是直接嵌入到请求流程里,代码紧凑。需要注意的是,onError的回调默认是在EDT(事件调度线程)执行的,所以直接调用UI组件没问题;如果遇到特殊情况,也可以用Display.getInstance().callSerially()把UI操作包裹起来,确保线程安全。

方法二:先获取完整响应再判断状态码

如果你需要对不同状态码做更细致的处理,可以先调用getResponse()拿到完整的响应对象,再根据状态码分支处理:

Response<Map> response = Rest.get(URL + "lookup")
    .jsonContent()
    .queryParam("account", accountNo)
    .getResponse();

if (response.getResponseCode() == 200) {
    // 状态正常,解析返回的JSON数据
    Map jsonData = response.getResponseData();
    // 这里写你的业务逻辑...
} else if (response.getResponseCode() == 404) {
    // 处理404错误,显示自定义提示
    Dialog.show("提示", "该账户不存在,请检查账号后重试", "确定", null);
} else {
    // 其他错误可以交给默认处理器处理
    response.handleError();
}

这种方法更灵活,你可以针对不同的错误码(比如401、500等)分别设置处理逻辑,适合复杂的错误场景。

两种方法都能解决你的问题,根据自己的需求选就行啦~

内容的提问来源于stack exchange,提问作者NvServices

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:19:55