首页 > 解决方案 > 如果代码出错,如何打印异常?

问题描述

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

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 派生”。有人能帮我吗?

标签: pythonpython-3.x

解决方案


您不能只提出随机字符串作为例外。如果您想在不定义相关类型的情况下引发一般异常,只需 raise 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")

人们可以专门捕捉它,或者通过 plain except ValueError:,except Exception:等。


推荐阅读