如果代码错误,如何打印异常?

时间:2019-04-01 19:58:58

标签: python python-3.x

如果有功能,我要从网站上请求一些数据,但是当我收到错误消息时,我想打印错误并重新启动代码。但是我不知道确切的代码,可以请人帮我吗?这是一个代码示例:

import time
input1 = input("Blabla: ")

def repeat():
    try:
        if input1 == "123":
            raise "Error: 123"
    except Exception as e:
        print(e)
        time.sleep(5) # Wait 5 seconds
        repeat() # Rerun code

repeat()

运行此代码时,出现错误“异常必须从BaseException派生”。有人可以帮我吗?

2 个答案:

答案 0 :(得分:6)

您不能只引发随机字符串作为例外。如果要在不定义相关类型的情况下引发一般异常,只需引发Exception,并替换为:

raise "Error: 123"

具有:

raise Exception("Error: 123")  # The "Error: " should probably be removed

或者,如果可以使用更具体的错误,请这样做。如果123由于值错误而无效,请使用ValueError代替Exception。如果有更具体的原因,请创建一个子类,以使其他人更容易捕获,例如(在模块的顶层):

class SpecialValueError(ValueError):
    pass

因此您可以这样做:

raise SpecialValueError("Error: 123")

人们可以通过特定的方式except ValueError:except Exception:等来捕获它。

答案 1 :(得分:0)

现在,您在打印错误对象的str时需要打印其表示形式

尝试一下:

def repeat():
    try:
        if input1 == "123":
            raise Exception("Error: 123") # You need to use an Exception class
    except Exception as e:
        print(repr(e)) # Notice I added repr()
        time.sleep(5)
        repeat()

异常的表示与异常的字符串

字符串:

try: 
    raise Exception("Exception I am!") 
except Exception as e: 
    print(e) 
# Output: Exception I am!

代表:

try: 
    raise Exception("Exception I am!") 
except Exception as e: 
    print(repr(e)) 

# Output: Exception('Exception I am!')