0Pricing
Dart Academy · 课时

throw、try 和 catch

检测并响应失败

throw、try 和 catch 是 CoddyKit 上的免费 Dart Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Dart Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Dart Academy 课程共包含 4 节课。

出现问题时

程序可能会遇到各种问题:输入错误、文件缺失、数学运算出错。Dart 会通过异常发出信号,而不是静默地表现异常。🚨

抛出异常

您可以使用 throw 主动报告问题。它会在问题发生的位置停止正常流程,并将控制权交给处理程序。

throw Exception('Something failed');

您可以抛出任何对象

Dart 允许您 throw 几乎任何对象,甚至是 String。实际开发中,您应当抛出真正的 Exception 或 Error 对象,这样处理程序会更清晰。

throw FormatException('Bad number');

保护有风险的代码

请将可能失败的代码放在 try 块中。Dart 会正常运行其中的代码,同时准备好在出现抛出操作时做出响应。

try {
  risky();
}

捕获问题

catch 块只会在 try 块抛出异常时运行。它会接收被抛出的对象,以便您检查并回应它。

try {
  risky();
} catch (e) {
  print('Caught: $e');
}

流程会跳过后续代码

throw 执行后,try 块的剩余部分会立即跳过。Dart 会直接跳转到匹配的 catch 块。

读取错误对象

catch (e) 中的变量会保存被抛出的内容。打印它通常会显示一条有帮助的消息,说明发生了什么问题。

catch (e) {
  print(e);
}

获取堆栈跟踪

在 catch 中添加第二个变量即可获取堆栈跟踪。它会显示导致失败的调用路径,让调试更容易。

catch (e, stack) {
  print(stack);
}

恢复运行,而不是崩溃

捕获异常的核心目的在于恢复。您可以记录日志、重试,或向用户显示友好的备用方案,而不是让程序崩溃。

未捕获就会崩溃

如果没有任何代码捕获抛出的异常,它就会向上冒泡,程序也会崩溃,并在控制台中打印错误。

完整示例

完整模式如下:在 try 中使用 throw,然后捕获并妥善处理,让执行能够继续进行。

try {
  throw Exception('Oops');
} catch (e) {
  print('Handled: $e');
}

快速检查

哪个块会实际响应被抛出的异常?

回顾

现在,您可以使用 throw 报告问题,在 try 中保护有风险的代码,并在 catch 中恢复。这三者能让程序持续运行。🎉

常见问题解答

「throw、try 和 catch」课时是免费的吗?

是的 — 「throw、try 和 catch」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Dart Academy 课程的其余内容,请升级到 CoddyKit PRO。 Dart Academy 课程共包含 4 节课。

「throw、try 和 catch」这节课中我会学到什么?

检测并响应失败 你通过在浏览器中直接运行的动手代码来练习 Dart Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Dart Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Dart Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「throw、try 和 catch」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Dart Academy 课中编写并运行代码吗?

能。每节 Dart Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. throw、try 和 catch
  2. on 子句和异常类型
  3. finally 和可靠清理
  4. 自定义异常和 rethrow
← 返回 Dart Academy