我可以在 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")
以上有效,但异常如下所示:
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)
检查文件是否存在。但我希望有一个更优雅的解决方案,因为通常不鼓励在打开文件之前检查文件是否存在。
是的,您可以在没有前一个异常上下文的情况下引发异常:
raise MyOwnException("Explaining the problem") from None
见https://docs.python.org/3/tutorial/errors.html#exception-chaining
所以首先,如果您认为这不是最佳做法,我很乐意在评论中进行讨论。
我的问题如下,我尝试根据用户输入来查找文件。如果找不到该文件,我会收到 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)
检查文件是否存在。但我希望有一个更优雅的解决方案,因为通常不鼓励在打开文件之前检查文件是否存在。
是的,您可以在没有前一个异常上下文的情况下引发异常:
raise MyOwnException("Explaining the problem") from None
见https://docs.python.org/3/tutorial/errors.html#exception-chaining