python中的错误与异常

错误与异常

错误通常指的是语法错误,使用错误的python语法,导致程序无法运行
invalid syntax:语法错误

异常:常见的说法为bug
异常通常指的是程序的语法没有问题,但程序运行的过程中可能发生了错误,即程序运行期出现的错误称为异常
异常代码:

try:执行代码
except:异常是执行的代码
else:没有异常时执行的代码
finally:有无异常都会执行的代码

捕获异常不报错
Bug永远存在
只要人编写的程序,就会有bug.我们无法编写出‘完美’的程序。但可以京自己所能的避免bug发生

断言(assert)是一种方式
通过断言,让程序处理可以被处理的情况,则主动抛出错误,同时附上错误信息,方便了解异常发生时的情况。如果遇到不能处理的情况则主动抛出。

使用raise主动抛出异常
示例:

In [1]: x = 10

In [2]: if x > 5:
   ...:     raise Exception(f'Error: {x}')
   ...:
---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-2-046e8724dea1> in <module>
      1 if x > 5:
----> 2     raise Exception(f'Error: {x}')
      3
输出报错内容:
Exception: Error: 10

raise 与 try/except配合使用
通过raise将异常向上抛出,由上层的try/except捕获并进行处理。

报错不显示,能处理就不会抛出错误

示例1:In [5]: if x > 5:
   ...:     try:
   ...:         raise Exception('Error')
   ...:     except:
   ...:         pass
   ...:

不能处理将错误继续往上抛
示例2:

In [6]: if x > 5:
   ...:     try:
   ...:         raise Exception('Error')
   ...:     except:
   ...:         print('xxx')
   ...:         raise
   ...:
   ...:
xxx
---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-6-3e253123aab7> in <module>
      1 if x > 5:
      2     try:
----> 3         raise Exception('Error')
      4     except:
      5         print('xxx')

Exception: Error

实操learn_bug提取文件总结:

#设置路径
filepaths = ['news.txt','not_exist_file.txt']

#for迭代对象
for fp in filepaths:
    #执行代码
    try:
        f = open(fp,'r', encoding='utf8')
    except:
        print(f'can not open {fp}')
    else:
        content = f.read()
        print(f'file content: {content}')
    finally:
        print('Python is easy!!!')

总共出现的错误异常问题:
路径设置问题

文本编码问题,不在于代码本身

最后代码严谨性问题(也就是平常错误语法)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值