这是一张python错误和异常相关的知识点图
语法错误
初学者常见的语法错误,大小写写错,冒号忘了,缩进乱了,加大括号等等,语法错误称为解析错
异常处理
try:
####执行代码
except:
####异常时执行的代码
else:
####没有异常时执行的代码
finally:
####不管是否有异常均会执行的代码
注意:
执行try中语句发生异常后,try中余下语句将被忽略;如果异常类型和except中的异常匹配,则对应的except子句被执行;
如果except中的异常均不匹配,则将会把异常传递到上层的try中;
一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常但最多只有一个分支会被执行;
最后一个except子句可以忽略异常的名称,它将被当作通配符使用
import sys try: f = open('myfile.txt') s = f.readline() i = int(s.strip()) except OSError as err: print("OS error: {0}".format(err)) except ValueError: print("xxxxxxx") except: print("Unexpected error:", sys.exc_info()[0]) raise
引发异常
raise [Exception [, args [, traceback]]],类似java的throw
注意:raise必须抛出Exception的子类(实例)
with语句
了解下工作原理:
with后返回的对象要求必须有这两个方法:__enter__() / __exit__(),例如文件对象file
进入与此对象相关的运行时上下文,调用object.__enter__(self)方法
退出与此对象相关的运行时上下文时调用object.__exit__(self, exc_type, exc_value, traceback)
简单的示例:
with open("myfile.txt") as f: for line in f: print(line, end="")
assert断言
用于判断一个表达式,在表达式条件为 false 的时候触发异常
语法:assert expression [, arguments]等价于:
if not expression: raise AssertionError(arguments)
例子:
>>>assert false,'hahahahah' 输出: Traceback (most recent call last): File "xxx/test1.py", line 40, in <module> assert False,'hahahah' AssertionError: hahahah