2016-12-05 49 views
2

我想知道是否可以在Python中编辑/定制内置错误的行为和打印输出。例如,如果I型:可以修改Python中的内置错误消息吗? (如果是这样,怎么办?)

>>> a = 1 
>>> print A 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'A' is not defined 

我所要的输出改为:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'A' is not defined. Check capitalization. 

此外,我希望出现这种情况在全球范围内,对于所有将来的代码,而无需显式在我的代码中包含一个异常。如果这种改变是可能的,我会认为这需要在Python的源代码或库文件级别完成。但是,我不确定在哪里可以确定这是否可能。

我在Ubuntu和OSX上都使用Python 2.7,所以在任一系统上的帮助将不胜感激。如果在其他地方已经提到了我的道歉,但是在“改变Python错误信息”上寻找线程通常给了我关于例外的话题,这不一定是我的兴趣。如果任何人都可以指向我的页面这虽然,我非常感谢它。)

+0

@ shash678您带来的主题没有回应当前的问题 – KromviellBlack

+0

您可能需要使用源代码,并且我相信它们很可能是C语言,所以您将不得不重新编译Python。与Python源代码混淆是一个坏主意,除非你真的知道你在做什么*。 –

+0

您将不得不向源代码添加更多逻辑。例如。即使你在a和a都没有定义时打印A,它也会给你同样的错误。事实上,你不知道在哪里编辑,这说明你需要先学习CPython编译器以及如何开始之前的异常。 – MYGz

回答

1

是的!有一种方法可以正是你想要的! traceback.py是检测代码中的错误的程序。然后它给你一个发生了什么事的解释(创建你看到的错误消息。) 你可以在你的库文件夹中找到这个文件的python。 在该文件中,当遇到错误时,您可以更改它输出的消息! 请告诉我,这是否帮助你!

+0

太棒了!这肯定对我有帮助,非常感谢!然而,奇怪的是,似乎并未明确包含在文件中的唯一错误类型是NameError,但其他类似SyntaxError和ValueError的错误类型都是。无论如何,这正是我一直在寻找的帮助,因为它确实给了我一个开始的地方。我会更新这个线程,如果我找出NameError可以编辑的地方。 – Dennis

+0

我很高兴我的帮助! – Qwerty

相关问题