【问题标题】:Continue execution after raising ValueError引发 ValueError 后继续执行
【发布时间】:2020-01-19 08:30:53
【问题描述】:

如何打印抛出的 ValueError 并继续进行下一次迭代?我搜索了一些,但主要是关于 try catch 块。考虑我的代码:

尝试 #1

for i in range(15):
    if i == 3:
        raise ValueError("error message")
    print(i)

尝试 #2

for i in range(15):
    if i == 3:
        try:
            raise ValueError("error message")
        except:
            pass
    print(i)

在 #1 中,我在 3 之后无法继续。在 #2 中,我没有收到任何抛出的错误。如何在抛出 ValueError 的同时继续进行下一次迭代?我想将 ValueError 扔到屏幕上,但继续打印项目。

【问题讨论】:

  • 如果只想打印错误信息并继续执行,则不需要引发异常。您可以只print 一条错误消息。
  • 您可以要么抛出错误或继续执行。你不能两者都做。
  • 您必须决定是否要抛出异常以停止本地执行并返回堆栈到下一个匹配的异常处理块,或者在当前位置继续执行。两者都不可能。
  • 抛出异常意味着放弃执行并在出现异常后继续意味着抑制它。你的目标在一起没有意义。你想实现什么行为?
  • 我想创建一个解释器会话。我们确实知道我们得到了一个错误(在这种情况下是 valueerror 示例)并继续使用解释器。我想实现这一点。使用 try except block 真的不可能吗?

标签: python exception


【解决方案1】:

如果您只想在循环期间在屏幕上看到ValueError,请考虑将其打印出来。

例如:

for i in range(15):
    if i == 3:
        try:
            raise ValueError("error message")
        except ValueError as err:
            print(err)
    print(i)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    • 2011-04-19
    • 1970-01-01
    • 2021-05-24
    • 2011-12-29
    • 2018-09-19
    相关资源
    最近更新 更多