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

Try catch块无法捕获rethrow抛出的FirebaseAuthException异常问题

无法捕获异常的核心原因

UI层调用异步返回的signInWithEmailAndPassword方法时,没有添加await关键字。Dart的异步异常捕获规则要求必须await一个Future对象,它执行过程中抛出的异常才会被当前作用域的try-catch块捕获。如果不加await,你写的try-catch只能捕获同步代码的异常,异步方法内部抛出的异常会被判定为未处理异常,不会进入你写的catch逻辑。

修复方案

仅需修改UI层调用逻辑,添加await关键字即可:

try {
    // 新增await关键字等待异步方法执行完成
    await authService.signInWithEmailAndPassword(
        emailController.text, passwordController.text);
} catch (error) {
    print("ui rethrow");
    // 此处可正常捕获到服务层rethrow的FirebaseAuthException,按错误码处理提示即可
}

你当前的Auth服务层代码逻辑没有问题,内部await了Firebase的认证方法、捕获异常后rethrow的写法完全符合要求,无需调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:27:07