异常

作者:追风剑情 发布于:2017-12-15 21:37 分类:Python

示例


  1. # -*- coding: cp936 -*-
  2. #异常
  3. #使用raise函数引发异常
  4. #raise Exception
  5. #raise Exception('hyperdrive overload') #自定义错误信息
  6.  
  7. import exceptions
  8. #dir函数可列出模块内容
  9. #exceptions模块中的异常类都可用在raise语句中
  10. #Exception是所有异常类的基类
  11. print dir(exceptions)
  12.  
  13. #定义自己的异常类
  14. #必须直接或间接继承Exception
  15. class SomeCustomException(Exception): pass
  16.  
  17. #捕捉异常
  18. #Python中的异常若没处理也会向上传播
  19. try:
  20. x = input('Enter the first number: ')
  21. y = input('Enter the second number: ')
  22. print x / y
  23. except ZeroDivisionError:
  24. print "The second number can't be zero!"
  25. #也可以加上raise语句把异常继续向上传播
  26. except TypeError:
  27. print "That wasn't a number. was it?"
  28.  
  29. #也可以用元组的方式同时捕捉多个异常,然后用同一个代码块处理。
  30. #except (ZeroDivisionError, TypeError, ...):
  31.  
  32. try:
  33. x = input('Enter the first number: ')
  34. y = input('Enter the second number: ')
  35. print x / y
  36. except (ZeroDivisionError,TypeError), e:#声明个异常对象e
  37. print e #直接打印出异常
  38. #在Python3.0中需要这样写
  39. #except (ZeroDivisionError,TypeError) as e:
  40.  
  41. #捕捉所有异常
  42. #写法一
  43. #except:
  44. #写法二(建议用这种)
  45. #except: Exception, e
  46.  
  47. try:
  48. print 'A simple task'
  49. except:
  50. print 'What? Something went wrong?'
  51. else:#未发生异常时,会执行else后的代码
  52. print 'Ah...It went as planned.'
  53. finally:#无论是否发生异常都会执行finally后的代码
  54. print 'Cleaning up...'
  55. #Python2.5之前的版本finally需要独立使用
  56.  
  57. #下面代码用于忽略警告
  58. import warnings
  59. #warnings.warn("警告信息")
  60. warnings.filterwarnings("ignore")
  61. warnings.warn("被忽略的警告信息")


运行测试

11111.png

一些内建异常
类 名 描 述
Exception
所有异常的基类
AttributeError
特性引用或赋值失败时引发
IOError
试图打开不存在的文件(包括其他情况)时引发
IndexError
在使用序列中不存在的索引时引发
KeyError
在使用映射中不存在的键时引发
NameError
在找不到名字(变量)时引发
SyntaxError
在代码为错误形式时引发
TypeError
在内建操作或者函数应用于错误类型的对象时引发
ValueError
在内建操作或者函数应用于正确类型的对象,但是该对象使用不合适的值时引发
ZeroDivisionError
在除法或者模除操作的第二个参数为0时引发

标签: Python

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号