1、异常的概念
在程序运行时,Python解释器遇到错误就会停止执行,并提示一些错误信息,这就是异常,我们称这个动作为抛出(raise)异常
程序开发时,很难将 所有的特殊情况 都处理的面面俱到,通过 异常捕获 可以针对突发事件做集中的处理,从而保证程序的 稳定性和健壮性
捕获异常:
try:
尝试执行的代码
except:
出现错误的处理
try: num = int(input("输入一个整数:")) print(num) except: print("请输入整数!")
2、错误类型捕获
try: # 尝试执行的代码 pass except 错误类型1: # 针对错误类型1,对应的代码处理 pass except (错误类型2, 错误类型3): # 针对错误类型2 和 3,对应的代码处理 pass except Exception as result: print("未知错误 %s" % result)
try: num = int(input("请输入整数:")) result = 8/num print("计算结果:%.2f" % result) except ValueError: print("请输入正确的整数") except ZeroDivisionError: print("除0错误") except Exception as result: print("未知错误 %s" % result)
3、异常捕获完整语法
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("无论是否有异常,都会执行的代码")
else
只有在没有异常时才会执行的代码
finally
无论是否有异常,都会执行的代码
4、异常的传递
异常会传递给函数的调用一方,直到传递到主程序,如果仍没有异常处理,程序会被终止;
开发时可以在主程序中增加异常捕获,这样其他函数的异常都会传递到主程序,保证代码简洁;
def demo1(): return int(input("请输入整数:")) def demo2(): demo1() try: demo2() except ValueError: print("输入的不是整数!") except Exception as result: print("未知错误 %s" % result)
5、主动raise异常
Python
中提供了一个 Exception
异常类
在开发时,如果满足 特定业务需求时,希望 抛出异常,可以:
创建 一个 Exception
的 对象
使用 raise
关键字 抛出 异常对象
def input_password(): pwd = input("输入密码:") if len(pwd) >= 8: return pwd # 密码小于8位,抛出异常 # 1.创建异常对象 ex = Exception("密码长度不够") # 2.主动抛出异常 raise ex try: print(input_password()) except Exception as result: print("出现错误:%s" % result)
1、
原文:https://www.cnblogs.com/ysysyzz/p/11067524.html