Pyton学习总结(7)-异常
来源:互联网 发布:thething知乎 编辑:程序博客网 时间:2024/05/17 23:18
处理异常
- 异常有不同的类型,其类型会作为消息的一部分打印出来,内置的异常 列出了内置的异常以及它们的含义。
while True: try: x = int(raw_input("Please enter a number: ")) break except ValueError: print "Oops! That was no valid number. Try again..." except (RuntimeError, TypeError, NameError): pass except IOError as e: print "I/O error({0}): {1}".format(e.errno, e.strerror) else : pass
try
语句可能有多个异常子句,用来指定多个不同的异常。不过至多只有一个处理程序将被执行。- 如果异常的类型与 except 关键字后面的异常名不匹配,它将被传递给上层的
try
语句。 - 一个 except 子句可以用带括号的元组列出多个异常的名字。括号是必须的。
else
子句必须放在except
后面,当try
没有抛出异常时将执行该语句,当try
执行return
时else
子句将不会被执行。- 使用
else
子句比把额外的代码放在try
子句中要好,因为它可以避免意外捕获不是由try ... except
语句保护的代码所引发的异常。 except
子句可以在异常名(或元组)之后指定一个变量。这个变量将绑定于一个异常实例,同时异常的参数将存放在实例的args
中。
try: raise Exception('spam', 'eggs')except Exception as inst: print type(inst) # the exception instance print inst.args # output : spam eggs print inst # __str__ allows args to be printed directly
引发异常
raise
语句允许程序员强行引发一个指定的异常。
try: raise NameError('HiThere')except NameError: print 'An exception flew by!' raise
自定义异常
class MyError(Exception): def __init__(self, value): self.value = value def __str__(self): return repr(self.value)try: raise MyError(2*2)except MyError as e: print 'My exception occurred, value:', e.value
- 用户可以通过创建新的异常类来命名自己的异常。异常通常应该继承Exception类,直接继承或者间接继承都可以。
- 创建一个能够引发几种不同错误的模块时,一个通常的做法是为该模块定义的异常创建一个基类,然后基于这个基类为不同的错误情况创建特定的子类。
finally
try
语句有另一个可选的子句,目的在于定义必须在所有情况下执行的清理操作。- 不管有没有发生异常,在离开try语句之前总是会执行
finally
子句。 - 另外,假如
try
、else
、except
、finally
语句都包含return
时,函数的返回值为最后执行的return
语句,也就是finally
中的return
语句,因为它总是最后执行。
try: raise KeyboardInterruptfinally: print 'Goodbye, world!'
0 0
- Pyton学习总结(7)-异常
- 简明pyton教程学习笔记 7-10 对象+输入输出+异常+标准库+更多内容
- (Pyton学习5)Dict对象
- Pyton学习12:字符串操作函数
- 异常学习总结
- 异常学习总结
- Java异常学习总结
- Java 异常学习总结
- SEH异常处理学习总结
- SEH异常处理学习总结
- SEH异常处理学习总结
- Java 异常处理学习总结
- Java 异常处理学习总结
- 黑马程序员----------------------异常学习总结
- 黑马程序员---异常学习总结
- 个人学习总结一异常
- SEH异常处理学习总结
- 对于异常的学习总结
- Android入门教程 SQLite的用法
- FPGA供电电压和JTAG引脚定义
- Shell 脚本
- Android Support Design库之DrawerLayout和NavigationView
- MySQL存储过程详解
- Pyton学习总结(7)-异常
- 获取本机服务器IP
- 强制弹出软键盘
- iOS中 property中的属性strong 、weak、copy 、assign 、retain 、unsafe_unretained 与autoreleasing区别和作用详解
- ArrayAdapter requires the resource ID to be a TextView问题整理
- 【C语言】位操作
- dubbo 框架的基本调用原理
- TCP UDP与IP
- 符号常量和常变量的区别