首先,如果您认为这不是最佳实践,我很乐意在评论中讨论。
我的问题如下,我尝试根据用户输入查找文件。如果找不到该文件,我会得到一个 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)
来检查文件是否存在。但是我希望有更加优雅的解决方案,因为通常不建议在打开文件之前检查文件是否存在。
exception-chaining
,这个术语我不知道。谢谢!太棒了! - Kerwin Sneijders