0Pricing
Mojo Academy · 课时

raises 注解

标记可能失败的函数

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

本课时的部分内容尚未翻译,以英文显示。

Honest About Failure

Mojo wants functions to be honest about whether they can fail. The raises keyword marks a function that might raise an error. 📣

Adding raises

Put raises right after the argument list. It tells callers this function may not always succeed.

fn parse(text: String) raises -> Int:
    ...

def Can Always Raise

A flexible def function may raise without any annotation. Mojo treats def as able to fail by default.

def load(name: String):
    raise Error("missing")

fn Must Declare It

A strict fn function cannot raise unless you add raises. This makes failure explicit and easy to spot.

fn safe(x: Int) -> Int:
    return x + 1

Calling a raising Function

Calling something marked raises means you must handle the error, usually inside a try block.

try:
    var n = parse("42")
except e:
    print(e)

Errors Bubble Through raises

If a raising function is called inside another raises function, the error simply propagates up without a try.

Non-raising Means Safe

A function without raises promises it will not raise. Callers can use it freely without try blocks.

The Compiler Checks You

Mojo's compiler rejects a raise inside a non-raising fn. This catches mismatches before your program ever runs.

Self-Documenting Code

The raises keyword acts as living documentation. One glance at the signature tells you if a call can fail.

Keep the Surface Small

Mark only the functions that truly can fail with raises. Fewer raising functions means simpler, safer call sites.

raises and Return Types

You combine raises with a normal return type. The function returns a value on success or raises on failure.

fn divide(a: Int, b: Int) raises -> Int:
    if b == 0:
        raise Error("divide by zero")
    return a // b

Quick Check

Think about how fn and the raises keyword work together.

Recap

You learned that raises declares a function may fail, that def can always raise while fn must opt in, and the compiler enforces it. 🎯

常见问题解答

「raises 注解」课时是免费的吗?

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

「raises 注解」这节课中我会学到什么?

标记可能失败的函数 你通过在浏览器中直接运行的动手代码来练习 Mojo Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Mojo Academy 需要有经验吗?

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

「raises 注解」课时需要多长时间?

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

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

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

此课程中的所有课时

  1. 引发错误
  2. 使用 try/except 捕获错误
  3. raises 注解
  4. 使用 finally 清理
← 返回 Mojo Academy