在 except 子句中抛出自定义异常时可以避免出现“During handling of…”的错误提示吗?

3

首先,如果您认为这不是最佳实践,我很乐意在评论中讨论。

我的问题如下,我尝试根据用户输入查找文件。如果找不到该文件,我会得到一个 FileNotFoundError 。这很好,但我希望提供一个更好的异常来更好地描述问题。用户并不真正知道文件是否存在会决定某些事情是否有可能发生。因此, FileNotFoundError 可能看起来有些不合适。所以我目前的做法是:

try:
    x = get_file(...)
except FileNotFoundError as e:  # Unsupported version
    raise MyOwnException(f"Explaining the problem")

以上方法可行,但异常信息如下:

  • FileNotFoundError 和堆栈跟踪
  • "在处理上述异常时,发生了另一个异常:"
  • MyOwnException 和堆栈跟踪

我只想要MyOwnException。为了实现这个目的,我知道可以这样做:

try:
    x = get_file(...)
except FileNotFoundError as e:  # Unsupported version
    file_not_found = True
if file_not_found:
    raise MyOwnException(f"Explaining the problem")

我也可以使用 os.path.isfile(file_path) 来检查文件是否存在。但是我希望有更加优雅的解决方案,因为通常不建议在打开文件之前检查文件是否存在。

1个回答

5

啊,exception-chaining,这个术语我不知道。谢谢!太棒了! - Kerwin Sneijders

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接