当前位置:   article > 正文

Python —— 异常处理(try-except)_python try e异常

python try e异常

      在执行一个语句的时候可能会遇见各种问题,报错。如果能考虑到这些问题并且做出相应的处理,就能使程序遇到异常情况也不断掉,继续执行

      Python中,引进了很多用来描述和处理异常的类,称为异常类。异常类定义中包含了该类异常的信息和对异常进行处理的方法。

Python中内建异常类的继承层次

try-except基本结构

  1. try:
  2. copyFile("d:/a.txt","e:/a.txt")
  3. except:
  4. print("文件无法拷贝")
  1. try:
  2. copyFile("d:/a.txt","e:/a.txt")
  3. except BaseException as e:
  4. print(e)
  5. print("文件无法拷贝")

这两种写法的区别就在于第二种写法可以打印出报错而程序又不停

BaseException是异常基类,是所有异常的父类


try-多except结构

  1. try:
  2. a=input("请输入一个被除数:")
  3. b=input("请输入一个除数:")
  4. c=float(a)/float(b)
  5. print(c)
  6. except ZeroDivisionError:
  7. print("异常。不能除以0")
  8. except ValueError:
  9. print("异常。不能将字符串转化成数字")
  10. except NameError:
  11. print("异常。变量不存在")

 多个except结构的顺序是先子类后父类,不然如果把BaseExcept放在最前面那么所有异常就都会到它这里了,后面就没机会了

try-except-else结构

 try..except..else结构增加了“else块”。如果try块中没有抛出异常,则执行else块。如果try块中抛出异常,则执行except块,不执行else块。

  1. try:
  2. a=input("请输入被除数:")
  3. b=input("请输入除数:")
  4. c=float(a)/float(b)
  5. except BaseException as e:
  6. print(e)
  7. else:
  8. print("除的结果是:",c)

try-except-finally结构

try..except..finally 结构中,finally块无论是否发生异常都会被执行;通常用来释放try块中
申请的资源。

  1. try:
  2. a=input("请输入一个被除数:")
  3. b=input("请输入一个除数:")
  4. c=float(a)/float(b)
  5. except BaseException as e:
  6. print(e)
  7. else:
  8. print(c)
  9. finally:
  10. print("我是finally中的语句,无论发生异常与否,都执行!")
  11. print("程序结束!")

traceback异常信息

  1. import traceback
  2. try:
  3. print('step1')
  4. num = 1/0
  5. except:
  6. traceback.print_exc()
  7. print("文件无法拷贝")

这样可以不用except BaseException as e就可以输出异常信息

将异常信息输出到指定文件中

  1. import traceback
  2. try:
  3. print('step1')
  4. num = 1/0
  5. except:
  6. with open('a.txt','w') as f:
  7. traceback.print_exc(file=f)
  8. print("文件无法拷贝")

当try中的语句发生异常后,异常部位以后的语句是不会执行了, 直接跳到except

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/243508
推荐阅读
相关标签
  

闽ICP备14008679号