python异常(Error)及异常处理

305 阅读2分钟

异常是在程序执行过程中发生的影响程序运行的事件,是在程序运行中发生的错误,本文将介绍常见异常类型及异常处理的相关操作

常见异常类型

1.TypeError:当操作或函数应用于不适当类型的对象时引发,如

a=1+'1' # TypeError: unsupported operand type(s) for +: 'int' and 'str'

2.ValueError:当函数或操作的参数具有正确的类型但不合法时引发,如

int('abc') #ValueError: invalid literal for int() with base 10: 'abc'

3.NameError:当尝试访问一个未定义的变量时引发,如

print(x) # NameError: name 'x' is not defined

4.IndexError:当尝试访问列表、元组或字符串中不存在的索引时引发,如

a=[1,2,3]
print(a[3]) # IndexError: list index out of range

5.KeyError:当尝试访问字典中不存在的键时引发,如

d={'a':1,'b':2}
print(d['c']) # KeyError: 'c'

6.ZeroDivisionError:当尝试除以零时引发,如

a=1/0 # ZeroDivisionError: division by zero

7.IOError:当尝试读取不存在的文件或无法访问文件时引发,如

f=open('nonexistent_file.txt', 'r') # IOError: [Errno 2] No such file or directory: 'nonexistent_file.txt'

8.ImportError:当尝试导入不存在的模块或包时引发,如

import nonexistent_module # ImportError: No module named 'nonexistent_module'

9.AttributeError:当尝试访问对象不存在的属性时引发,如

a='abc'
print(a.uppercase()) # AttributeError: 'str' object has no attribute 'uppercase'

10.KeyboardInterrupt:当用户中断程序执行时引发,如

while True:
    try: x = input('Enter a number: ') 
        break
    except KeyboardInterrupt: 
        print('You pressed Ctrl+C!') # ctrl+c是终止程序的快捷键

异常处理:当程序出现异常时让程序仍能正常运行

try:
	异常代码
except (Exception): #与finally块至少出现一个
	上面代码出现对应异常类型时执行的代码,没有标明异常类型则出现异常就执行
else#可选块
	未出现异常执行代码
finally#与except块至少出现一个
	上面执行完成后执行代码

其中except块和finally块至少出现一个,else块可选
可以用 except 异常类型: 筛选捕获特定异常时才执行,except Exception: 则是捕获所有异常,print(Exception可以输出异常信息

其他操作

异常的传递:函数中出现异常会将异常作为返回值传给调用方,直到传递到主程序仍没有异常处理才会终止程序,因此函数也可以作为try中的检测异常代码
抛出异常:raise 异常类型("异常现象语句")主动触发异常现象,可以自定义异常触发的类型和信息,常用于 if 结构中对检测特定条件触发异常输出

raise Exception("抛出异常") # 输出“Exception:抛出异常”