class CustomFileNotFoundError(FileNotFoundError):
def __init__(self, file_path, expected_usage, *args, **kwargs):
self.file_path = file_path
self.expected_usage = expected_usage
super().__init__(*args, **kwargs)
def inner_function():
file_path = "nonexistent_file.txt"
expected_usage = "read data for analysis"
try:
with open(file_path, 'r') as f:
pass
except FileNotFoundError as e:
raise CustomFileNotFoundError(file_path, expected_usage) from e
def middle_function():
try:
inner_function()
except CustomFileNotFoundError as e:
raise
def outer_function():
try:
middle_function()
except CustomFileNotFoundError as e:
print(f"Custom File Not Found Error: {e}")
print(f"File Path: {e.file_path}")
print(f"Expected Usage: {e.expected_usage}")
print(f"Original Error: {e.__cause__}")
if __name__ == "__main__":
outer_function()