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

Kob*_*ens 0 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()
Run Code Online (Sandbox Code Playgroud)

运行此代码时,出现错误“例外必须从BaseException派生”。有人能帮我吗?

Sha*_*ger 6

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

raise "Error: 123"
Run Code Online (Sandbox Code Playgroud)

与:

raise Exception("Error: 123")  # The "Error: " should probably be removed
Run Code Online (Sandbox Code Playgroud)

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

class SpecialValueError(ValueError):
    pass
Run Code Online (Sandbox Code Playgroud)

因此,您可以执行以下操作:

raise SpecialValueError("Error: 123")
Run Code Online (Sandbox Code Playgroud)

人们可以抓住它具体地讲,或者通过简单的except ValueError:except Exception:等等。