A anotação raises
Marque funções que podem falhar.
A anotação raises é uma aula grátis de Mojo Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Mojo Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Mojo Academy inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
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. 🎯
Perguntas Frequentes
A aula “A anotação raises” é grátis?
Sim — o texto completo de “A anotação raises” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Mojo Academy, atualize para CoddyKit PRO. O curso de Mojo Academy inclui 4 aulas no total.
O que vou aprender em “A anotação raises”?
Marque funções que podem falhar. Você pratica Mojo Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Mojo Academy?
Nenhuma experiência prévia é necessária. Mojo Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “A anotação raises”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Mojo Academy?
Sim. Cada aula de Mojo Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Lançando um erro
- Capturando com try/except
- A anotação raises
- Limpando com finally