python 错误异常处理

通常异常处理分为三大类

语法错误 语意错误 逻辑错误


语法错误

这里写图片描述

语法错误一般都是少写了些标点符号
只要console看到SyntaxError 几乎都是语法错误


语义错误

例如 除以0为语义错误

这里写图片描述


逻辑错误

逻辑错误是比较难排查的,它跟代码无关,跟代码的设计有关
例如使用不当的循环,代码不报错,但是结果不是你想要的
这类的话要分析考虑你的流程,或者设计是不是有问题。


异常处理

代码有问题我们肯定要做出处理
就是把有可能出现错误的地方放到一个代码层面上去
try:
尝试
eccept 明确的类型错误:

except:
捕获
else:
都没捕获


try:
    x = 5 / 0
    print(x)
except ZeroDivisionError:
    print('不能除0')
except:
    print('其它错误')
else:
    print('没有异常')

这里写图片描述


打印出异常的详细信息
这里写图片描述


例子2:
打印出类的name
这里写图片描述

如果打印出age会报错:
这里写图片描述

做出异常处理的代码:

class person:
    def __init__(self,name):
        self.name = name

p = person('peter')
try:
  print(p.age)
except AttributeError as e:
    print('属性错误 详细信息:',e)
except:
    print('其它错误')
else:
    print('没有错误')

这里写图片描述


finally 最终的意思
不管文件有没有异常最终都要处理的信息
那么什么时候加finally呢??
它是针对一些有需要释放资源的东西
例如 文件 数据库…. 读写一些内容遇到了问题,而文件已经打开了,中间如果遇到异常终止退出来的话,可能会影响后续的操作
所以要用finally

try:
    f = open('date.txt')
    f.read()
except:
    print('文件操作遇到错误')
finally:
    f.close()

这里写图片描述


异常有时候不一定非把它截断
但实际开发中有一个原则,在程序中有一个异常,不能就这么悄悄的过,你必须要处理 哪怕不处理至少要让它抛出来 终止程序

有的时候我们需要手动的抛出异常


手动抛出异常

这里写图片描述

手动抛出异常有什么意义呢???
例如:我们在c#,或者java定以了一个接口,而这个接口是必须要实现的,那这样我们可以把它写到一个方法里面

def method():
    raise NotImplementedError('该方法代码还未实现')

method()

这里写图片描述


异常有很多详细参见官网的内置文档
https://docs.python.org/3.5/tutorial/errors.html


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值