相关概念

- 错误:程序运行之前的语法错误,如:关键字、缩进不齐、括号不成对。
- 异常:在程序运行过程中出现的问题,如:除数为0、对象属性不存在等。 异常处理 - 说明:异常处理可以理解为特殊的流程控制语句,可以提高代码的健壮性。
- 语法:
try:
print('正常代码')
# 3/0
# print(a)
print('正常结束')
except Exception as e:
# 此处捕获异常,然后做出异常的处理
print('出现了异常', e) print('over')
- 多个异常
'''
try:
print('正常代码')
# print(a)
# 3/0
d = {}
print(d['age'])
except NameError as e:
print('NameError:', e)
except ZeroDivisionError as e:
print('ZeroDivisionError:', e)
except Exception as e:
print('Other:', e)
''' try:
# print(a)
# 3/0
d = {}
print(d['age'])
except (NameError, ZeroDivisionError) as e:
# 将某些异常放在一起进行统一处理
print(e)
except:
print('其他异常') print('OVER')
- 完整结构
try:
print('正常执行')
print(a)
except Exception as e:
# 出现异常时执行
print('出现异常:', e)
else:
# 没有异常时执行
print('正常结束')
finally:
# 无论有无异常都会执行
print('最后执行')
- 抛出异常
try:
print('正常执行')
# 根据业务逻辑需要,手动抛出异常
raise Exception('手动抛出的异常')
print('正常结束')
except Exception as e:
print('异常', e) print('OVER')
- 异常嵌套
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('热情满满的开始一天的工作')
- 自定义异常类
# 自定义异常类
class MyException(Exception):
def __init__(self, msg):
self.msg = msg def __str__(self):
return self.msg # 异常处理函数
def deal(self):
print('特定的处理方案') try:
print('正常执行')
raise MyException('自定义异常')
except MyException as e:
print(e)
# 处理异常
e.deal()
# 这种异常放在最后
except Exception as e:
print('Exception', e) print('OVER') - 特殊场景
- 当进行文件操作时,无论过程中有误异常,最后一定要关闭文件。
- 使用with语句,来保证文件的关闭,无论中间是否出现异常。
- 示例:
'''
fp = open('00-text.txt', 'r')
content = fp.read(1024)
# ...
# ...
# 最后一定要关闭文件
fp.close()
''' with open('00-text.txt', 'r') as fp:
content = fp.read(1024)
# ...
# ...
# 不需要考虑文件的关闭问题,
# 无论中间有无异常,都会确保文件的关闭

最新文章

  1. Java中的抽象类
  2. 【Alpha阶段】第三次Scrum例会
  3. Java多线程基础知识(四)
  4. Quartus ii 12.1软件破解之后编译原有的工程出现报警错误的解决办法
  5. [Phalcon] Phalcon系统默认事件列表
  6. Eclipse无法进入Debug模式
  7. Reflect
  8. UITextField swift
  9. iOS第三方(ActionSheet)-JTSActionSheet
  10. Maven下使用Jetty进行Debug
  11. excel用vlookup,lookup时查询数据需要排序
  12. pdo 抽象层连接数据库
  13. 【HDOJ 1215】七夕节
  14. Python初识2
  15. Struts2+Spring+Hibernate实现员工管理增删改查功能(一)之ssh框架整合
  16. C#保留2位小数的做法
  17. docker 小技巧 列出所有容器的IP地址
  18. js 获取数组重复的元素
  19. linux 常用命令-变量命令
  20. 在LaTeX中使用颜色 Using colours in LaTeX

热门文章

  1. asp.net中Page.ClientScript.RegisterStartupScript用法小结
  2. 【luogu P1993 小K的农场】 题解
  3. 深入PHP中的引用
  4. Code First 一
  5. c语言描述的静态查找表
  6. Spring知识点总结(五)Spring整合JDBC
  7. SpringBoot非官方教程 | 第十二篇:springboot集成apidoc
  8. toad for sql server
  9. SQL、T-SQL与PL-SQL的区别
  10. session和cookie的介绍