博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 异常处理
阅读量:5992 次
发布时间:2019-06-20

本文共 2007 字,大约阅读时间需要 6 分钟。

异常处理

错误与异常

  • 错误:程序运行前的语法问题,如:关键字、缩进、括号不成对等

  • 异常:在程序运行过程中出现的错误,如:变量未定义、除数为0、属性不存在等

异常处理

  • 说明:异常处理可以认为是一种特殊的流程控制语句,可以提高代码的健壮性。

  • 语法:try-except

    try:     print('正常执行')     # print(a)     print(3/0) except Exception as e: # Exception是所有异常的基类,因此此处可以捕获所有异常 print('出现异常,进行处理') print(e) print('其他代码')
  • 捕获多个异常:

    try:     # print(a)     # print(3/0)     fp = open('123.txt') except NameError as e: print('NameError:', e) except ZeroDivisionError as e: print('ZeroDivisionError:', e) except Exception as e: print('other:', e)

    也可以对多种异常进行分组处理:

    try:     # print(a)     # print(3/0)     fp = open('123.txt') except (NameError, ZeroDivisionError) as e: # 将特定的某些异常统一处理,写到元组中即可 print(e) except: print('其他异常')
  • else和finally

    try:     print('正常执行')     print(a) except: print('出现异常') else: # 出现异常就不执行了 print('正常结束') finally: # 无论有误异常都会执行 print('无论如何都执行')

    else:在没有异常的时候回执行,出现异常就不执行了

    finally:无论是否有异常,都会执行

  • 抛出异常:raise

    try:     print('开始')     # 根据代码逻辑的需要,手动抛出特定的异常     raise Exception('手动抛出异常') print('一切正常') except Exception as e: print('出现异常:', e) print('结束')
  • 异常嵌套:try-except结构中嵌套try-except结构

    print('我要去上班,什么事情都不能阻止我上班的脚步') try:     print('我准备骑电动车')     raise Exception('昨天晚上那个缺德的家伙把我充电器给拔了,无法骑车') print('骑电动车提前到达公司') except Exception as e: print(e) try: print('我准备坐公交') raise Exception('等了20分钟一直没有公交车,果断放弃') print('坐公交准时到达公司') except Exception as e: print(e) print('我准备打车') print('打车还是快,一会就到公司了') print('热情满满的开始一天的工作')
  • 自定义异常类:继承自异常的基类(Exception)

    # 自定义异常类,名字通常以Exception结尾 class MyException(Exception):     def __init__(self, msg): self.msg = msg def __str__(self): # repr键变量转换成字符串,若本身是字符串则不必要 # return repr(self.msg) return self.msg def deal(self): print('异常已处理') try: print('正常执行') raise MyException('手动抛出定义异常') except MyException as e: print(e) e.deal()
  • 特殊使用

    • 场景:做文件操作时,中间无论读写,也无论有误异常,最终一定要把文件关闭

    • with:使用with,不必再关系文件的关闭问题,with语句块结束后一定会确保文件关闭

    # fp = open('test.txt', 'rb') # # 各种读写操作 # fp.close() ​ # 使用with,无需关心文件的关闭问题 with open('test.txt', 'rb') as fp: content = fp.read(5) print(content)

转载于:https://www.cnblogs.com/kiki5881/p/8588230.html

你可能感兴趣的文章
virtual ,abstract,override 用法
查看>>
linux下怎么退出telnet
查看>>
关注细节但不陷入细节
查看>>
Hadoop学习笔记—19.Flume框架学习
查看>>
Deep Learning(深度学习)学习笔记整理系列之(三)
查看>>
飞天开放平台编程指南——阿里云计算的实践
查看>>
卓越领导者:从优秀经理人迈向卓越领导者的登峰之道
查看>>
HDU 4415 Assassin’s Creed(贪心)
查看>>
HDU 4549 M斐波那契数列(矩阵幂)
查看>>
欧拉函数学习小记
查看>>
git stash
查看>>
csharp: Getting all image files in folder
查看>>
get与post请求简单理解
查看>>
OpenCV探索之路(八):重映射与仿射变换
查看>>
webgl介绍
查看>>
http 500 Internal Server Error的错误 ajax请求SpringMVC后台中返回500 Internal Server Error
查看>>
LIN 笔记
查看>>
蜻蜓FM下载文件名还原
查看>>
好久都没写blog了
查看>>
GameOver
查看>>