Аннотация raises
Помечайте функции, которые могут завершиться ошибкой.
«Аннотация raises» — бесплатный урок Mojo Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения 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 + 1Calling 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 // bQuick 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» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Mojo Academy, подпишись на CoddyKit PRO. Курс Mojo Academy содержит 4 уроков всего.
Чему я научусь в уроке «Аннотация raises»?
Помечайте функции, которые могут завершиться ошибкой. Ты практикуешь Mojo Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Mojo Academy?
Предыдущий опыт не требуется. Mojo Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Аннотация raises»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Mojo Academy?
Да. Каждый урок Mojo Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Генерация ошибки
- Перехват с try/except
- Аннотация raises
- Очистка с finally