我可以在 except 子句中抛出自定义异常而不会导致:"During handling of..."

Can I throw a custom exception within except clause without causing: "During handling of..."

所以首先,如果您认为这不是最佳做法,我很乐意在评论中进行讨论。

我的问题如下,我尝试根据用户输入来查找文件。如果找不到该文件,我会收到 FileNotFoundError。这很好,但我想给出一个适当的例外来更好地描述问题。用户并不知道文件的存在决定了某事是否可行。所以 FileNotFoundError 可能看起来不合适。所以我目前拥有的是:

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

以上有效,但异常如下所示:

我希望只有 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) 检查文件是否存在。但我希望有一个更优雅的解决方案,因为通常不鼓励在打开文件之前检查文件是否存在。

是的,您可以在没有前一个异常上下文的情况下引发异常:

raise MyOwnException("Explaining the problem") from None

https://docs.python.org/3/tutorial/errors.html#exception-chaining