Em geral, o código deve lidar com condições excepcionais onde quer que seja apropriado. Sim, esta é uma declaração vaga.
Em linguagens de nível mais alto com manipulação de exceção de software, isso geralmente é indicado como "capturar a exceção no método em que você pode realmente fazer algo a respeito". Se ocorreu um erro de arquivo, talvez você deixe que ele borbulhe a pilha para o código de interface do usuário que pode realmente informar ao usuário "seu arquivo falhou ao salvar no disco". O mecanismo de exceção engole efetivamente "cada pequeno erro" e o manipula implicitamente no local apropriado.
Em C, você não tem esse luxo. Existem algumas maneiras de lidar com erros, alguns dos quais são recursos de linguagem / biblioteca, alguns dos quais são práticas de codificação.
Is it a good practice to just ignore certain errors, or is there a better way to handle all the errors?
Ignorar certos erros? Talvez. Por exemplo, é razoável supor que a gravação na saída padrão não falhará. Se falhar, como você diria ao usuário? Sim, é uma boa ideia ignorar certos erros ou codificar defensivamente para evitá-los. Por exemplo, verifique se há zero antes de dividir.
Existem maneiras de lidar com todos ou pelo menos a maioria dos erros:
- Você pode usar saltos, semelhantes a gotos, para tratamento de erros . Embora seja um problema contencioso entre os profissionais de software, há usos válidos para eles, especialmente em código incorporado e de desempenho crítico (por exemplo, kernel do Linux).
-
Em cascata em
if
s:if (!<something>) { printf("oh no 1!"); return; } if (!<something else>) { printf("oh no 2!"); return; }
-
Teste a primeira condição, por exemplo abrindo ou criando um arquivo, então suponha que as operações subseqüentes sejam bem-sucedidas.
O código robusto é bom e deve-se verificar e manipular os erros. Qual método é o melhor para o seu código depende do que o código faz, quão crítica é uma falha, etc. e somente você pode realmente responder a isso. No entanto, esses métodos são testados em batalha e usados em vários projetos de código aberto, onde você pode dar uma olhada para ver como o código real verifica erros.