You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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)}')

优化说明:

  1. 扁平化结构:将所有可能出错的操作放在同一个try块中,彻底消除多层嵌套,代码更简洁易读。
  2. 精准捕获异常:
    • FileNotFoundError:专门捕获图片文件不存在或路径错误的情况,对应原代码最外层的错误场景。
    • ValueError:捕获输入的宽高无法转换为整数的情况,对应原代码中间层的错误场景。
    • Exception:作为兜底,捕获Resizer函数可能抛出的其他异常(如果Resizer有特定的自定义异常或Pillow专属异常,建议替换为具体的异常类型,比如PIL.Image.Error,避免隐藏未知问题)。
  3. 保留清晰提示:每个异常分支对应原代码的错误提示,用户体验不变。

如果Resizer函数会抛出Pillow相关的特定异常,比如处理图片时的格式错误,可以进一步细化最后一个except:

from PIL import ImageError

# ... 其他代码 ...
except ImageError:
    print('Error processing image in Resizer function. Try Again')

内容的提问来源于stack exchange,提问作者Ajay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 14:57:28