- 1. 异常机制本质
- 2. 异常处理结构
- 2.1 try… 一个 except 结构
- 2.2 try… 多个 except 结构
- 2.3 try…except…else 结构
- 2.4 try…except…finally 结构
- 3. with 上下文管理
- 4. trackback 模块
- 5. 自定义异常类
- 异常指程序运行过程中出现的非正常现象;
- 异常处理,就是指程序在出现问题时依然可以正确的执行剩余的程序,而不会因为异常而终止程序执行;
- 异常类:用来描述和处理异常的类;
- 异常处理过程:
- 抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给解释器;
- 捕获异常:解释器得到该异常后,寻找相应的代码来处理该异常;
2. 异常处理结构 2.1 try… 一个 except 结构
try: 被监控的可能引发异常的语句块 except BaseException [as e]: 异常处理语句块2.2 try… 多个 except 结构
- 一般建议尽量捕获可能出现的多个异常(按照先子类后父类的顺序) ,并且针对性的写出异常处理代码;
try: 被监控的、可能引发异常的语句块 except Exception1: 处理 Exception1 的语句块 except Exception2: 处理 Exception2 的语句块 ... except BaseException: 处理可能遗漏的异常的语句块2.3 try…except…else 结构
- 如果 try 块中没有抛出异常,则执行 else 块;
- 如果try 块中抛出异常,则执行 except 块,不执行 else 块;
try:
a = input("请输入被除数:")
b = input("请输入除数:")
c = float(a)/float(b)
except BaseException as e:
print(e)
else:
print(" 除的结果是:",c)
2.4 try…except…finally 结构
- finally块无论是否发生异常都会被执行;
- 通常用来释放 try 块中申请的资源;
try:
a = input("请输入一个被除数:")
b = input("请输入一个除数:")
c = float(a)/float(b)
except BaseException as e:
print(e)
else:
print(c)
finally:
print(" 我是 y finally 中的语句,无论发生异常与否,都执行!")
print(" 程序结束!")
3. with 上下文管理
- with 上下文管理可以自动管理资源,在 with 代码块执行完毕后自动还原进入该代码之前的现场或上下文;
- 不论何种原因跳出 with 块,不论是否有异常,总能保证资源正常释放;
with context_expr [ as var]: 语句块
4. trackback 模块
import traceback try: print( "step1") num = 1/0 except: traceback.print_exc()
5. 自定义异常类
- 自定义异常类一般都是运行时异常,通常继承 Exception或其子类即可;
- 命名一般以 Error、Exception 为后缀;
- 自定义异常由 raise 语句主动抛出;
class AgeError(Exception):
def __init__(self,errorInfo):
Exception.__init__(self)
self.errorInfo = errorInfo
def __str__(self):
return str(self.errorInfo)+ ", 年龄错误!应该在 0 1-150 之间"
if __name__ == "__main__":
age = int(input("输入一个年龄 :"))
if age<1 or age>150:
raise AgeError(age)
else:
print("正常的年龄:",age)



