您好我正在做这样的程序。
class MyError(Exception):
def __init__(self, text = "Correct")
self.text = text
def __str__(self):
return (self.kod)
class Atom(self):
.
.
.
try:
function()
else:
raise MyError("Incorrect use of function")
def main():
try:
a = Atom()
except:
# Here i want to print the error that was raised
我认为我理解的是,在Atom()中创建的对象中引发了错误。 但我想将它发送到我的主程序并在那里打印错误MyError。 是否可以这样做,我应该如何编写它以便打印正确的异常文本,因为我将有几个不同的错误消息。
如果我来到except语句,我会想要得到消息"错误地使用函数"打印。
答案 0 :(得分:0)
看起来你非常接近:
class MyError(Exception):
def __init__(self, text = "Correct")
self.text = text
def __str__(self):
return (self.kod)
class Atom(self):
.
.
.
try:
function()
except: # try: ... else: raise ... seems a bit funky to me.
raise MyError("Incorrect use of function")
def main():
try:
a = Atom()
except Exception as err: # Possibly `except MyError as err` to be more specific
print err
诀窍在于,当您捕获错误时,您希望使用as
子句将异常实例绑定到名称。然后你可以打印它,查看它的属性,重新加注或者用你选择的任何东西。
请注意,此代码仍然不“干净”。通常,您希望尽可能地限制异常处理 - 仅捕获期望看到的异常以及您知道如何处理的异常。否则,您有时可能会很难掩盖代码中的错误。因此:
try:
do_something()
except:
...
不鼓励(它抓住了KeyboardInterrupt
和SystemExit
等各种各样的东西......相反:
try:
do_something()
except ExceptionIKnowHowToHandle:
...
建议。
答案 1 :(得分:0)
首先,从不做空except
。这将捕获所有错误,包括KeyboardInterrupt
之类的错误 - 因此您将无法从程序中删除ctrl-c。在这里你应该抓住MyError
。
except子句还允许您将实际异常分配给变量,然后可以打印或执行其他任何操作。所以你可以这样做:
try:
...
except MyError as e:
print e.text