如果有功能,我要从网站上请求一些数据,但是当我收到错误消息时,我想打印错误并重新启动代码。但是我不知道确切的代码,可以请人帮我吗?这是一个代码示例:
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派生”。有人可以帮我吗?
答案 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!')