Software  
 
Rede de conhecimento computador >> Software >> Open Source Code >> Content
Como um programa pode ser feito para imprimir o nome do arquivo de origem onde ocorre um erro?
O método para imprimir o nome do arquivo de origem em que ocorre um erro depende muito da linguagem de programação e do tipo de erro. Aqui está um colapso de abordagens para vários cenários comuns:

1. Manuseio de exceção (a maioria dos idiomas):

A maioria dos idiomas modernos tem mecanismos de manuseio de exceção. A idéia principal é capturar exceções e extrair informações sobre onde elas se originaram. Isso geralmente inclui o nome do arquivo e o número da linha.

* python:

`` `Python
Importar Traceback

tentar:
# Algum código que pode aumentar uma exceção
resultado =10/0
Exceto exceção como e:
traceback.print_exc () # imprime o rastreamento completo, incluindo o nome do arquivo e o número da linha
`` `

`traceback.print_exc ()` é crucial aqui. Uma simples `print (e)` pode mostrar apenas o tipo de exceção e a mensagem, não o local.

* java:

`` `Java
tentar {
// Algum código que pode aumentar uma exceção
int resultado =10 /0;
} catch (arithmeticexception e) {
E.PrintStackTrace (); // imprime o rastreamento da pilha com o nome do arquivo e o número da linha
}
`` `

`E.PrintStackTrace ()` fornece funcionalidade semelhante ao `traceback.print_exc ()` do Python.

* c ++:

O C ++ não possui um manuseio de exceção interno tão elegante quanto o Python ou o Java. Você precisará usar ferramentas de depuração ou bibliotecas como `libunwind` para obter informações detalhadas sobre rastreamento de pilhas. Isso é mais complexo e geralmente requer sinalizadores de compiladores e ligantes para ativar símbolos de depuração. O manuseio básico de erro pode envolver apenas o registro do erro com `perror`, que não fornece informações sobre o nome do arquivo.

* javascript (node.js):

`` `JavaScript
tentar {
// Algum código que pode causar um erro
deixe resultado =10 /0;
} catch (erro) {
console.error (error.stack); // imprime o rastreamento da pilha, incluindo o nome do arquivo e o número da linha
}
`` `


2. Diretivas de pré -processador (C/C ++):

Em C e C ++, você pode usar o pré -processador para inserir o nome do arquivo em seu código:

`` `c ++
#include

#Define file_name __file__

int main () {
tentar {
int resultado =10 /0;
} catch (const std ::Exception &e) {
std ::Cerr <<"Erro no arquivo:" < // ... Manipulação de erros mais detalhados ...
}
retornar 0;
}
`` `

`__File__` é uma macro de pré -processador que se expande para o nome do arquivo atual. Isso é menos sofisticado do que o rastreamento da pilha do manuseio de exceção, pois apenas fornece o nome do arquivo do local de erro imediato, não a cadeia de chamadas de função que leva a ele.

3. Bibliotecas de registro:

Muitas bibliotecas de registro (como `loging` no python ou` log4j` em java) incluem automaticamente informações de arquivo e linha em suas mensagens de log. Essa é uma boa abordagem para rastrear erros durante a execução do programa, mesmo que você não lide explicitamente com exceções em todos os pontos de erro em potencial.

4. Debuggers:

Debuggers (como o GDB para C/C ++, PDB para Python) são inestimáveis ​​para encontrar erros. Eles fornecem informações detalhadas sobre o estado de execução no ponto de falha, incluindo o nome do arquivo e o número da linha.


Considerações importantes:

* Cuidados de depuração: Para muitos idiomas, são necessárias opções de compilador para ativar informações de depuração (por exemplo, `-g` sinalizador no GCC). Esta informação é crucial para traços de pilha e funcionalidade do depurador. As construções de liberação geralmente retiram essas informações de depuração para reduzir o tamanho executável.
* Strategy de manuseio de erro: Decida se deve lidar com erros localmente (usando `tente ... exceto`/` Tente ... catch`) ou centralmente (usando o log). Uma abordagem híbrida geralmente é melhor.
* clareza: Evite mensagens de erro genéricas. Forneça contexto sempre que possível (por exemplo, "Erro de leitura do arquivo 'Data.txt'").



Lembre-se de escolher o método que melhor se adequa ao seu idioma, à complexidade do seu aplicativo e à sua estratégia de manipulação de erros. O manuseio de exceções emparelhado com um sistema de madeira geralmente oferece uma solução robusta.

Anterior :

Próximo :
  Os artigos relacionados
·Como criar um Tag do título para uma Home Page no Word…
·Como configurar o Vim Sem X 
·Qual é a camada padrão no documento flash? 
·Como apagar arquivos incorporados 
·Sobre a Open Source Firewall para Windows XP 
·Como começar com Compass 
·As desvantagens de Proprietary Protocolo 
·Como você programa um botão no script WinCC para abri…
·O que é memória de violação de acesso 
·Como fazer um Bot em ICP 
  Artigos em destaque
·O que é o Exchange Hosting 
·Quais são os principais recursos e a mecânica de jogo…
·Como contar letras com a MS Word 
·Fita 2007 Vs . 2003 
·Quando você precisa usar parênteses em fórmulas para…
·Como remover um vírus Trojan Win32 
·Como imprimir etiquetas de endereço no computador 
·Como transformar uma foto em uma ilustração no Photos…
·Quem fabrica servidores SQL e o que é esse número de …
·Além de criar uma série de valores que arraste o iden…
Cop e direita © Rede de conhecimento computador https://ptcomputador.com Todos os Direitos Reservados