Entendendo o `panic`
Parte da seção Lógica & Fluxo do Journey de GO da Coddy — lição 42 de 68.
Em Go, panic é uma função integrada usada para situações verdadeiramente excepcionais em que seu programa encontra um erro irrecuperável e deve parar imediatamente. Ao contrário de erros comuns que você trata de forma adequada, panic é reservado para falhas catastróficas que indicam algo fundamentalmente errado com a lógica ou o ambiente do seu programa.
Quando panic é chamado, ele interrompe imediatamente a execução normal da função atual e começa a desenrolar a pilha de chamadas. Isso o torna muito diferente da abordagem típica do Go de retornar erros que podem ser tratados pelo código chamador.
Em Go idiomático, o panic é raramente usado. A comunidade Go favorece fortemente o tratamento explícito de erros por meio de valores de retorno, em vez de um tratamento de erros baseado em pânico. Você pode encontrar o panic em situações como acessar um array fora dos limites, desreferenciar um ponteiro nulo ou quando uma biblioteca detecta um estado impossível que indica um erro de programação.
A maioria dos programas Go deve lidar com erros de forma adequada usando a interface de erro padrão sobre a qual você tem aprendido. panic deve ser considerado apenas quando realmente não houver uma maneira razoável para o seu programa continuar em execução.
Experimente você mesmo
Esta lição não inclui um desafio de código.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Fluxo de Controle Avançado
Switch com `fallthrough`Interrompendo Loops AninhadosContinuando um Loop EspecíficoA Instrução `goto`Recapitulação - Controle de Loop Avançado4Projeto: Lista de Tarefas Simples
Configuração do ProjetoAdicionando uma Tarefa7Tratamento de Erros em Profundidade
Tipos de Erro PersonalizadosWrapping de Erros com `%w`Unwrapping com `errors.Is`Unwrapping com `errors.As`Entendendo o `panic`Usando o `recover`Recapitulação - Divisão Segura2Structs e Métodos
Definindo Métodos em StructsRecebedores de ValorRecebedores de PonteiroEscolhendo RecebedoresMétodos vs FunçõesRecapitulação - Comportamento de Structs5Mapas em Profundidade
Mapas de StructsPonteiros como Valores de MapVerificando Mapas NilComparando MapasRecapitulação - Contador de Frequência de Palavras3Interfaces (O Básico)
O que é uma Interface?Definindo uma InterfaceImplementando uma InterfaceUsando Tipos de InterfaceInterface VaziaAsserções de TipoType SwitchRecapitulação - Formas e Comportamentos