Python中嵌套try-except块的替代方案求解
优化Pillow图片缩放程序的错误捕获方案
你可以通过捕获具体异常类型和扁平化try-except结构来减少嵌套,同时保证错误捕获的精准性。以下是优化后的实现:
def GettingValues(): try: # 读取图片 img = im.open(input('Enter image name or path: ')) # 获取并转换宽高输入 width = int(input('Enter required width: ')) height = int(input('Enter required height: ')) # 调用缩放函数 Resizer(img, width, height) except FileNotFoundError: print("Error in file name. Try Again") except ValueError: print("Error in Width or Height Values. Try Again") except Exception as e: # 捕获Resizer函数抛出的其他异常(可根据实际替换为具体异常类型) print(f'Error calling Resizer function. Try Again: {str(e)}')
优化说明:
- 扁平化结构:将所有可能出错的操作放在同一个
try块中,彻底消除多层嵌套,代码更简洁易读。 - 精准捕获异常:
FileNotFoundError:专门捕获图片文件不存在或路径错误的情况,对应原代码最外层的错误场景。ValueError:捕获输入的宽高无法转换为整数的情况,对应原代码中间层的错误场景。Exception:作为兜底,捕获Resizer函数可能抛出的其他异常(如果Resizer有特定的自定义异常或Pillow专属异常,建议替换为具体的异常类型,比如PIL.Image.Error,避免隐藏未知问题)。
- 保留清晰提示:每个异常分支对应原代码的错误提示,用户体验不变。
如果Resizer函数会抛出Pillow相关的特定异常,比如处理图片时的格式错误,可以进一步细化最后一个except:
from PIL import ImageError # ... 其他代码 ... except ImageError: print('Error processing image in Resizer function. Try Again')
内容的提问来源于stack exchange,提问作者Ajay
相关产品推荐
相关产品推荐

