程序开发时,很难将 所有的特殊情况 都处理的面面俱到,通过 异常捕获 可以针对突发事件做集中的处理,从而保证程序的 稳定性和健壮性
语法格式
try: 尝试执行的代码 except: 出现错误的处理 try: # 不能确定正确执行的代码 num = int(input("请输入一个整数:")) except: # 错误的代码处理 print("请输入正确的整数") print("-" * 50)捕获未知错误
在开发时,要预判到所有可能出现的错误,还是有一定难度的如果希望程序 无论出现任何错误,都不会因为 Python 解释器 抛出异常而被终止,可以再增加一个 except语法如下:
except Exception as result: print("未知错误 %s" % result) try: # 提示用户输入一个整数 num = int(input("请输入一个整数:")) # 使用 8 除以用户输入的整数并且输出 result = 8/num print(result) except ValueError: print("请输入正确的整数") except Exception as result: print("未知错误 %s" % result)完整的异常语法如下:
try: # 尝试执行的代码 pass except 错误类型1: # 针对错误类型1,对应的代码处理 pass except 错误类型2: # 针对错误类型2,对应的代码处理 pass except (错误类型3, 错误类型4): # 针对错误类型3 和 4,对应的代码处理 pass except Exception as result: # 打印错误信息 print(result) else: # 没有异常才会执行的代码 pass finally: # 无论是否有异常,都会执行的代码 print("无论是否有异常,都会执行的代码") try: # 提示用户输入一个整数 num = int(input("请输入一个整数:")) # 使用 8 除以用户输入的整数并且输出 result = 8/num print(result) except ValueError: print("请输入正确的整数") except Exception as result: print("未知错误 %s" % result) else: print("尝试成功") finally: print("无论是否出现错误,代码都会被执行") print("*" * 20)提示
在开发中,可以在主函数中增加 异常捕获而在主函数中调用的其他函数,只要出现异常,都会传递到主函数的 异常捕获 中这样就不需要在代码中,增加大量的 异常捕获,能够保证代码的整洁 def demo1(): return int(input("输入整数:")) def demo2(): print(demo1()) # 利用异常的传递性,在主程序中捕获异常 try: print(demo2()) except Exception as result: print("未知错误 %s" % result)示例
提示用户 输入密码,如果 长度少于 8,抛出 异常注意
当前函数 只负责 提示用户输入密码,如果 密码长度不正确,需要其他的函数进行额外处理因此可以 抛出异常,由其他需要处理的函数 捕获异常