python异常处理

目录

异常是什么

常见异常

python异常处理语句

注意:

rasie

实践时注意事项


异常是什么

在调式python程序时,会经常报出异常,也可以理解为bug,当程序遇到异常时,程序则会停止运行,异常的出现的原因一方面是在写的过程中因为粗心语法、逻辑等发生错误,这种情况经过调式修改基本上都可以解决,另一方面是有些异常是不可避免的,这个时候就可以对异常进行捕捉,以防止程序停止运行。

常见异常

  • BaseException
    • 所有异常的基类
      • SystemExit
        • 解释器请求退出
      • KeyboardInterrupt
        • 用户中断执行(通常是输入^C)
      • GeneratorExit
        • 生成器(generator)发生异常来通知退出
      • Exception
        • 常规异常的基类
          • NameError
            • 访问的变量不存在
          • AssertionError
            • 断言语句(assert)失败
          • OverflowError
            • 数值运算超出最大限制
          • AttributeError
            • 对象没有这个属性
          • OSError
            • 操作系统产生的异常
          • FloatingPointError
            • 浮点计算错误
          • SyntaxError
            • Python语法错误
          • ImportError
            • 导入模块/对象失败
          • TypeError
            • 不同类型间的无效操作
          • IndexError
            • 序列中没有此索引(index)
          • ValueError
            • 传入无效的参数
          • IOError
            • 输入/输出操作失败
          • ZeroDivisionError
            • 除(或取模)零 (所有数据类型)
          • KeyError
            • 映射中没有这个键,建议使用dict.get()方法
          • MemoryError
            • 内存溢出错误(对于Python 解释器不是致命的)

python异常处理语句

语句结果如下:

try:
    代码1

except 异常1:
    代码2

except 异常2:
    代码3

else:
    代码4

finally:
    代码5

首先运行try内的代码1,如果代码1中出现了异常1,就运行代码2,如果出现了异常2,就运行代码3,以此类推。反之当代码1中没有出现异常,则运行代码4,finally中的语句代码5是最后运行的,是不管有没有异常都会运行。

注意:

  • except语句不是必须,finally语句也不是必须,但是两者必有一个,否则就没有try的意义了
  • except语句可以有多个,python会按照except语句的顺序依次匹配你所指定的异常,如果异常已经处理就不会再进入到后面的Except.
  • except语句可以用元组形式用时指定多个异常
  • except语句后面如果不指定异常类型,则默认捕捉所有异常,可以通过logging或这sys模块获取当前

rasie

作用是可以抛出异常。简单说就是可以主动触发异常。

格式:

raise[Exception[,args[,Traceback]]]

 注意:

  • 如果要捕获异常重新抛出,请使用rasie, 后面不要带任何参数或者信息
  • 不建议捕获并抛出同一个异常.

实践时注意事项

  • 只处理你所知道的异常,避免捕获到所有的异常之后吞掉它们
  • 抛出异常之后应该说明原因,有时候你知道这个异常类型也猜不出所以然.
  • 避免在try语句块中干一些没有意义的事情,捕获异常也是需要成本的.
  • 不要使用异常来控制流程,因为你的程序会超级难懂和维护.
  • 如果有需要,切记使用finally来释放资源
  • 如果有需要,不要忘记在处理完异常之后做清理工作或者回滚操作.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HHYZBC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值