vamei前辈博客地址:http://www.cnblogs.com/vamei/archive/2012/07/10/2582787.html

#!/usr/bin/python
#python ver3.3
#异常处理
print ('异常处理')
'''
在项目开发中,异常处理是不可或缺的。异常处理帮助人们debug,通过更加丰富的信息,让人们更容易找到bug的所在。异常处理还可以提高程序的容错性。我们之前在讲循环对象的时候,曾提到一个StopIteration的异常,该异常是在循环对象穷尽所有元素时的报错。我们以它为例,来说明基本的异常处理。
'''
#一个包含异常的程序:
'''
re = iter(range(5))for i in range(100):print (re.__next__())print ('HaHaHaHa') #程序中断,此语句不会执行
''''''
首先,我们定义了一个循环对象re,该循环对象将进行5次循环,每次使用序列的一个元素。在随后的for循环中,我们手工调用next()函数。当循环进行到第6次的时候,re.next()不会再返回元素,而是抛出(raise)StopIteration的异常。整个程序将会中断。
''''''
我们可以修改以上异常程序,直到完美的没有bug。但另一方面,如果我们在写程序的时候,知道这里可能犯错以及可能的犯错类型,我们可以针对该异常类型定义好”应急预案“。
'''
re = iter(range(5))try:for i in range(100):print (re.__next__())
except StopIteration:print ('here is end ',i)print ('HaHaHaHa')
#在try程序段中,我们放入容易犯错的部分。我们可以跟上except,来说明如果在try部分的语句发生StopIteration时,程序该做的事情。如果没有发生异常,则except部分被跳过。#完整的语法结构如下:
'''
try:...
except exception1:...
except exception2:...
except:...
else:...
finally:...
''''''
如果try中有异常发生时,将执行异常的归属,执行except。异常层层比较,看是否是exception1, exception2...,直到找到其归属,执行相应的except中的语句。如果except后面没有任何参数,那么表示所有的exception都交给这段程序处理。比如:
'''
try:print(a*2)
except TypeError:print("TypeError")
except:print("Not Type Error & Error noted")
#由于a没有定义,所以是NameError。异常最终被except:部分的程序捕捉。#如果无法将异常交给合适的对象,异常将继续向上层抛出,直到被捕捉或者造成主程序报错。比如下面的程序
def test_func():try:m = 1/0except NameError:print("Catch NameError in the sub-function")try:test_func()
except ZeroDivisionError:print("Catch error in the main program")
#子程序的try...except...结构无法处理相应的除以0的错误,所以错误被抛给上层的主程序。
'''
如果try中没有异常,那么except部分将跳过,执行else中的语句。finally是无论是否有异常,最后都要做的一些事情。
'''
#抛出异常
print ("抛出异常")
#我们也可以自己写一个抛出异常的例子:
print ('Lalala')
raise StopIteration
print ('Hahaha')
'''
这个例子不具备任何实际意义。只是为了说明raise语句的作用。StopIteration是一个类。抛出异常时,会自动有一个中间环节,就是生成StopIteration的一个对象。Python实际上抛出的,是这个对象。当然,也可以自行生成对象:
'''
raise StopIteration()#总结
'''
try: ... except exception: ... else: ... finally: ...
raise exception
'''

转载于:https://www.cnblogs.com/v-BigdoG-v/p/7398592.html

8.Python进阶_异常处理相关推荐

  1. Python 进阶_生成器 生成器表达式

    目录 目录 相关知识点 生成器 生成器 fab 的执行过程 生成器和迭代器的区别 生成器的优势 加强的生成器特性 生成器表达式 生成器表达式样例 小结 相关知识点 Python 进阶_迭代器 & ...

  2. Python进阶08 异常处理

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 本文特别感谢kylinfish的纠正,相关讨论见留言区. 异常处理 在项目开发中, ...

  3. Python进阶|聊聊异常处理

    前言 在编写代码中,总会遇到一些bug和报错,怎么去捕获这些异常,并进行处理,以让程序更健硕了?本篇文章将带你聊聊Python的异常处理. 错误与异常 编写的程序出错,至少有两种可能,一是语法错误,二 ...

  4. Python 进阶_闭包 amp; 装饰器

    目录 目录 闭包 函数的实质和属性 闭包有什么好处 小结 装饰器 更加深入的看看装饰器的执行过程 带参数的装饰器 装饰器的叠加 小结 装饰器能解决什么问题 小结 闭包 Closure: 如果内层函数引 ...

  5. Python 进阶_模块 包

    目录 文章目录 目录 模块的搜索路径和路径搜索 命名空间和变量作用域的比较 变量名的查找/覆盖 导入模块 import 语句 from-import 语句 扩展的 import 语句 as 自动载入模 ...

  6. Python 进阶_函数式编程

    目录 目录 函数式编程 Python 函数式编程的特点 高阶函数 匿名函数 lambda 函数式编程相关的内置函数 filter 序列对象过滤器 map reduce 折叠 自定义的排序函数 最后 函 ...

  7. Python 进阶_闭包 装饰器

    目录 目录 闭包 函数的实质和属性 闭包有什么好处 小结 装饰器 更加深入的看看装饰器的执行过程 带参数的装饰器 装饰器的叠加 小结 装饰器能解决什么问题 小结 闭包 Closure: 如果内层函数引 ...

  8. Python 进阶_模块 amp; 包

    目录 目录 模块的搜索路径和路径搜索 搜索路径 命名空间和变量作用域的比较 变量名的查找覆盖 导入模块 import 语句 from-import 语句 扩展的 import 语句 as 自动载入模块 ...

  9. python进阶_基础篇4(数据类型和列表)

    数据类型和列表 内容回顾(基础篇三) 1:if条件 应用场景: 1)if 单分支: 满足条件执行某个操作,不满足就不执行 2)if 双分支: 满足条件执行某个操作,不满足执行另一个操作 3)if 多分 ...

  10. Python进阶篇---异常处理

    栗子: 举一个花费金币的栗子,假设原始金币有1000,现需要输入一个数字,使得金币数量减少 为防止输入异常信息,需要对程序进行容错异常处理 money = 1000 num = input('plea ...

最新文章

  1. SQL Server数据库收缩日志的方法
  2. C++ Primer 第10章 习题10.23
  3. 最新最全的ASP.NET学习资源大全
  4. java的同步块_Java 同步块
  5. java反射invoke空指针_【Java】Java 反射 object is not an instance of declaring cla
  6. java jni开发_Java JNI开发实践记录
  7. zsh: command not found: 解决方法
  8. hdu 4300 Clairewd’s message kmp匹配! 多校联合赛第一题
  9. ES6学习笔记二(解构赋值、语法糖)
  10. LA3027(并查集)
  11. android 修改wifi信道,学会修改WiFi信道,让你的WIFI提速
  12. 计算机命令提示符的使用,命令提示符(电脑系统命令提示符的打开方法)
  13. gtx780有html接口吗,史上最强显卡供电GTX780入手,纪念给了我人生一堂课的舅妈...
  14. 如何在 Chrome 浏览器中安装印象笔记·剪藏插件
  15. 码云上传文件夹_本地上传码云文件
  16. U盘打不开的常见情况和解决方法
  17. 简单的天气变幻系统,简单易用的unity天气插件UniStorm教程
  18. primeng dropdown ngmodel 选择项初始化
  19. 计算机专业的短期计划范文,制定计算机学习计划范文3篇
  20. Java实现自动输入账号密码登陆软件

热门文章

  1. 7、创建ROS msg和srv
  2. android 控件颜色随焦点变化实例
  3. Eclipse is running in a JRE, but a JDK is requi...
  4. 第十四天linux扩展知识点
  5. 学技术的不能自废武功
  6. vue : 无法加载文件 D:\Program Files\nodejs\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsof t.com/fwlin
  7. time 测试一条命令的执行时间
  8. python收取wss数据_python量化入门(二)——确定基金的市值属性和风格属性
  9. flask实现mysql连接池_mysql-Flask-SQLAlchemy-快速连接到多个数据库
  10. 手动创建线程池_创建线程池