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 异常处理的主要内容,如果未能解决你的问题,请参考以下文章

Python异常处理

Python --- 异常处理

Python基础---python中的异常处理

Python异常处理

python-异常处理及异常处理的两种方式对比

Python 异常处理