python 异常处理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 异常处理相关的知识,希望对你有一定的参考价值。
异常的抛出机制:
运行发生异常时,解释器首先会查找相应的处理语句(称为handle);
在当前函数中没找到,则会将异常传递给上层的调用函数;
如果在最外层(main)还是没有找到,解释器就会退出,并打印出记录,以便让用户找到问题产生的原因
异常处理语句:
try:
do
except:
do
如一个文件没找到的异常:
try:
open("abc.txt","r") #以读‘r’的方式打开文件
except FileNotFoundError: #文件没找到
print("异常了!")
如变量没有找到的异常:
try:
print(aa) #打印出变量aa
except NameError: #变量aa没有找到
print("异常了!")
在Python中,所有的异常都继承Exception,所以可以使用它来接收所有类型的异常
try:
do
except Exception:
do
以上两个例子优化后如下:
一个文件没找到的异常:
try:
open("abc.txt","r") #以读‘r’的方式打开文件
except Exception: #文件没找到
print("异常了!")
变量没有找到的异常:
try:
print(aa) #打印出变量aa
except Exception: #变量aa没有找到
print("异常了!")
从Python2.5版本之后,所有的异常类都有了新的基类BaseException,Exception 同样也继承自BaseException,所以也可以使用BaseException来接收所有类型的异常
以上两个例子优化后如下:
try:
open("abc.txt","r") #以读‘r’的方式打开文件
print(aa) #打印出变量aa
except BaseException:
print("异常了!")
如何让Python告诉我们异常原因——使用msg
try:
open("abc.txt","r") #以读‘r’的方式打开文件
print(aa) #打印出变量aa
except BaseException as msg: #msg变量接收异常信息
print(msg) #打印出详细的异常信息
Python中常见的异常 | |
异常 | 描述 |
BaseException | 新的所有异常类的基类 |
Exception | 所有异常类的基类,但继承BaseException类 |
AssertionError | assert语句失败 |
FileNotFoundError | 试图打开一个不存在的文件或目录 |
AttributeError | 试图访问的对象没有属性 |
OSError | 当系统函数返回一个系统相关的错误,包括I/O故障,如"找不到文件"或“磁盘已满”时,引发此异常 |
NameError | 使用一个未赋值对象的变量 |
IndexError | 当一个序列超出了范围 |
SyntaxError | 当解析器遇到一个语法错误时引发 |
KeyboardInterrupt | Ctrl+C被按下,程序被强行终止 |
TypeError | 传入的对象类型与要求不符 |
更多异常用法:
①
try:
aa="异常测试"
print(aa)
except Exception as msg:
print(msg)
else:
print("没有异常")
###执行结果###
异常测试
没有异常
②
try:
print(aa)
except Exception as e:
print(e)
finally:
print("不管是否有异常,我都会被执行")
抛出异常
raise Exception("语句")
raise 只能使用Python所提供的异常类,不能使用自定义的异常
以上是关于python 异常处理的主要内容,如果未能解决你的问题,请参考以下文章