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 realmente excepcionais, nas quais seu programa encontra um erro irrecuperável e precisa parar imediatamente. Ao contrário dos erros comuns, que você trata de maneira adequada, panic é reservado para falhas catastróficas que indicam que há algo fundamentalmente wrong na lógica ou no 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, panic é raramente usado. A comunidade Go favorece fortemente o tratamento explícito de erros por meio de valores de retorno, em vez do tratamento de erros baseado em panic. Você pode encontrar panic em situações como acessar um array fora dos limites, desreferenciar um ponteiro nil ou quando uma biblioteca detecta um estado impossível que indica um erro de programação.
A maioria dos programas em Go deve lidar com erros de forma adequada usando a interface de erro padrão sobre a qual você tem aprendido. panic só deve ser considerado quando realmente não houver uma maneira razoável de 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 ComportamentosPratique por conta própria: Compilador de Go online