如何将带条件判断的if-else转换为try-except语句?
问题解决:将if-else转换为try-except的正确写法
你写的try-except代码有两个核心问题,导致逻辑完全失效:
return bool(condition1 == 1)会直接终止函数,后面的print('Everything is good')永远不会执行- 布尔表达式
condition1 == 1不会抛出异常,所以except块永远不会被触发,不管条件是否满足
要实现「满足条件打信息,不满足打错误日志」的逻辑,正确的做法是在条件不满足时主动抛出异常,让except块捕获并执行错误处理逻辑。修改后的代码如下:
try: # 条件不满足时主动抛出异常 if condition1 != 1: raise ValueError("Condition check failed") # 条件满足时执行日志信息打印 print('Everything is good') except ValueError: # 原else块的错误处理逻辑 orig_diff = list(set(sheetnames).difference(file.sheet_names)) new_diff = list(set(file.sheet_names).difference(sheetnames)) if len(orig_diff) != 0: print("{} cond1 not met".format(','.join(orig_diff))) if len(new_diff) != 0: print("{} cond2 not met".format(','.join(new_diff)))
逻辑说明:
- 当
condition1 == 1时,不会触发raise,直接执行print('Everything is good') - 当
condition1 != 1时,抛出ValueError,程序跳转到except块执行错误日志的打印逻辑 - 建议捕获特定类型的异常(比如这里的ValueError),避免捕获无关的系统异常,提升代码健壮性
内容的提问来源于stack exchange,提问作者mjoy
相关产品推荐
相关产品推荐

