python异常介绍 try 主动抛出异常 断言
异常
''' 异常是程序运行过程中发生的非正常情况, 是一个错误发生时的信号 异常如果没有被正确处理的话, 将导致程序被终止, 这对于用户体验是非常差的, 可能导致严重的后果 处理异常的目的就是提高程序的健壮性 '''
常见异常
TypeError: 'int' object is not subscriptable 对象不能被切片
TypeError: 'list' object is not callable 对象不能被调用
IndexError: list index out of range 索引超出范围
TypeError: 'builtin_function_or_method' object is not iterable 对象不能被迭代
KeyError: 'xxx' 不存在这个key
FileNotFoundError: [Errno 2] No such file or directory: 'xxxxx' 文件找不到
异常处理
# 语法: try: 可能会出现异常的代码 放到try里面 except 具体异常类型 as e: 如果真的发生异常就执行except
try: 正常的操作 ...................... except: 发生异常,执行这块代码 ...................... else: 如果没有异常执行这块代码
try-finally 语句
try-finally 语句无论是否发生异常都将执行最后的代码。
try: <语句> finally: <语句> #退出try时总会执行 raise
try: fh = open("testfile", "w") fh.write("这是一个测试文件,用于测试异常!!") finally: print "Error: 没有找到文件或读取文件失败"
主动抛出异常
我们可以使用raise语句自己触发异常
raise语法格式如下:
raise [Exception [, args [, traceback]]]
def functionName( level ): if level < 1: raise Exception("Invalid level!", level) # 触发异常后,后面的代码就不会再执行
断言assert
Python assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。
断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况,可以先判断当前系统是否符合条件。
语法格式如下:
assert expression
等价于:
if not expression: raise AssertionError
assert 后面也可以紧跟参数:
assert expression [, arguments]
等价于:
if not expression: raise AssertionError(arguments)