异常
语法错误
在集成开发环境中,如果出现语法错误则IDE会立即报告。
运行时错误
程序运行起来之后才体现出来的错误
异常处理
基本方法
try:
可能出现错误的语句段
except [指定的异常类型]: # 指定一种异常类型
出现该类异常以后的处理
except Exception as e: # 放在最后,兜底接收其他错误类型
print(e) # 输出错误信息
默认的错误处理
else:
try下代码块执行结束,没有遇到异常后,执行的代码块
finally:
无论有没有异常都会执行的代码块
Exception 是所有异常的父类,通常放在最后用来接收未知的错误类型
若要获取错误类型的报错信息,需要使用:
except 异常类型 as 名字:
print(名字)
异常处理中return执行顺序
无finally
-
try中有return: 立刻返回,结束程序段的执行
-
else中有return: 立刻返回,结束程序段的执行
有finally
- try中有return而finally中无: 暂缓return,待finally执行完毕后返回
- else中有return而finally中无: 暂缓return,待finally执行完毕后返回
- finally中有return:无论try或else中是否有return,均以finally中返回的为准
异常传递
如果调用关系有多层,那么内层如果出错,错误就会被层层抛出,直到在某处被捕获或处理。
如果直到最终调用处都未被捕获或处理,那么就会被抛出
自定义异常
当系统给定的异常不能满足需求时,可以使用自定义异常来进行补充
# 自定义一个异常
class UserNameError(Exception):
def __init__(self,*args,**kwargs):
pass
# 在方法中使用自定义异常
def setUserName():
username = input('请输入用户名:')
if len(username)<6 or username[0].isdigit():
raise UserNameError('用户名格式错误') # 用raise抛出异常
else:
print('输入成功')
try:
setUserName()
except Exception as e: # 接收异常
print(e)