课后习题
请你编写自定义异常类,如果读取的文件小于 10 个字符,抛出文件过小的自定义异常,如果读取的文件大于等于 10 个字符,则正常输出该文件内容。
课程代码、课件及其他相关资料地址
https://gitee.com/wilsonyin/zero-basics-python
作者回复: 代码有个小问题, 使用 with 语句时,__exit__ 会捕获所有类型的异常,而不仅仅是 CustomException。这可能不是你想要的行为。我稍微改写一下: class ExceptionHandler: def __init__(self, exc_type): self.exc_type = exc_type def __enter__(self): return self def __exit__(self, exc_type, exc_value, traceback): if exc_type == self.exc_type: print('捕获到了自定义异常:', exc_value) return True # 这意味着异常已被处理,不会再向上层传播 with open('./b.txt', 'r') as f: content = f.read() with ExceptionHandler(CustomException): if len(content) < 10: raise CustomException('文件不能小于10个字符') print(content)