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

为什么我的Flutter代码中print()语句无输出且报int不是String子类错误

问题原因

  • 目标print语句没有执行,是因为catch代码块内部在运行到这行print之前就触发了新的int转String的类型异常,直接跳出了当前catch逻辑,所以这行代码不会被运行。
  • 报错type 'int' is not a subtype of type 'String'的常见触发场景集中在catch块内的异常信息处理逻辑:
    • 你直接把后端返回的int类型字段(比如状态码statusCode、错误码code等)赋值给了String类型的变量,或者直接和字符串拼接,Dart不支持int和String类型的隐式转换
    • 你解析异常返回的JSON数据时,某字段后端实际返回的是int类型,但你定义的接收变量是String类型,没有做显式转换就直接赋值

排查方案

你可以先给catch块嵌套一层try-catch定位具体报错行:

try {
  // 原有注册请求逻辑
} catch (e) {
  try {
    // 你原有catch块内的所有逻辑
    print("I can no see thiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiis");
    // 其他异常处理、弹窗逻辑
  } catch (innerE, stackTrace) {
    print("内层catch报错:$innerE");
    print("报错栈:$stackTrace");
  }
}

定位到具体行后,把所有从异常对象、响应体里取的字段,需要用到String类型的位置,统一加toString()做显式转换即可,比如:

// 错误写法
String errMsg = "注册失败,错误码:" + error.response.statusCode;
// 正确写法
String errMsg = "注册失败,错误码:${error.response?.statusCode?.toString() ?? '未知'}";

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:15:02