【问题标题】:How to raise a different kind of error when an error occurs?发生错误时如何引发不同类型的错误?
【发布时间】:2017-10-02 13:14:38
【问题描述】:

我想知道当我知道我的代码中会发生 ValueError 时,我将如何设置一种方法来引发 RuntimeError。例如:

def example(string):
    try:
       var1, var2, var3 = string.split(":")
    except ValueError:
       raise RuntimeError

如果我输入一个由冒号分隔的少于 3 个元素的字符串(即“Hi:SO!”),我会期望得到一个 ValueError;但是我想让它引发一个 RuntimeError 并继续执行该程序而不会使其停止。我将如何着手将此 ValueError 提升为 RuntimeError 而仍然排除 RuntimeError?

【问题讨论】:

  • 确实引发了 RuntimeError(在您缩进分配并将名称 var 3 修复为 var3 之后)。真正的问题是为什么你要提出特定的例外?异常有一个目的:告知用户为什么会发生不好的事情。
  • 你似乎做得对!如果您真的想“捕获”运行时错误,请再次尝试!
  • 谢谢,我尝试了第二种尝试方法,效果很好!
  • 捕捉到异常后如果想继续执行程序,可以使用Warnings代替!

标签: python python-3.x error-handling exception-handling


【解决方案1】:

你可以这样做:

vars = string.split(":")
if not len(vars) == 3:
    raise RuntimeError("your message")
else:
    var1, var2, var3 = vars

这个想法是检查字符串拆分列表长度是否等于 3,如果是,则引发任何你想要的异常,然后在你想要的地方处理它(使用适当的异常处理)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    相关资源
    最近更新 更多