RX0061

Domínio: Execução

Mensagem de erro

match em %s (%s): nenhum braço o admitiu e não há else

Na mensagem, %s marca um valor que o motor preenche quando levanta o erro.

A história

Seu match não encontrou nenhum braço que servisse, e como não havia else, o motor recusou. Vamos entender. O match é um despachante: olha o assunto e escolhe o braço certo. Aqui, nenhum braço aceitou o assunto. Sem caminho para rotear, e sem valor para devolver, o despachante emperra. O pega-tudo é responsabilidade de quem escreve: se zero braços foram satisfeitos, deve existir um else. Sem ele, o motor poderia seguir em silêncio e rodar o resto do programa sobre uma premissa que o autor nunca escreveu, o que é perigoso. Então ele recusa e mostra o assunto, como o heap o guarda e como foi escrito. Exemplo: um match sobre o dia da semana, com braços para segunda e terça, e o assunto é quarta. Nada casa. A correção: adicione um else ao final do match, dizendo o que fazer quando nenhum braço serve. Mesmo que você ache que o caso não pode acontecer, o else deixa isso explícito.

Texto do catálogo de erros do motor do Rush.