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类
AssertionErrorassert语句失败
FileNotFoundError试图打开一个不存在的文件或目录
AttributeError试图访问的对象没有属性
OSError当系统函数返回一个系统相关的错误,包括I/O故障,如"找不到文件"或“磁盘已满”时,引发此异常
NameError使用一个未赋值对象的变量
IndexError当一个序列超出了范围
SyntaxError当解析器遇到一个语法错误时引发
KeyboardInterruptCtrl+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所提供的异常类,不能使用自定义的异常

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/yishuiqinglian/p/6812416.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值