Python_try异常处理的解决方法

常用异常种类

 1 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
 2 IOError 输入/输出异常;基本上是无法打开文件
 3 ImportError 无法引入模块或包;基本上是路径问题或名称错误
 4 IndentationError 语法错误(的子类) ;代码没有正确对齐
 5 IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
 6 KeyError 试图访问字典里不存在的键
 7 KeyboardInterrupt Ctrl+C被按下
 8 NameError 使用一个还未被赋予对象的变量
 9 SyntaxError Python代码非法,代码不能编译
10 TypeError 传入对象类型与要求的不符合
11 UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
12 ValueError 传入一个调用者不期望的值,即使值的类型是正确的

如需要考虑到try代码块中可能出现的异常,需要先针对定义,最后定义Exception来确保程序正常运行。

1 s1 = 'hello'
2 try:
3     int(s1)
4 except KeyError as e:
5     print '键错误'
6 except IndexError as e:
7     print '索引错误'
8 except Exception as e:
9     print '错误'

异常其它结构

 1 try:
 2     # 主代码块
 3     pass
 4 except KeyError as e:
 5     # 异常时,执行该块
 6     pass
 7 else:
 8     # 主代码块执行完,执行该块
 9     pass
10 finally:
11     # 无论异常与否,最终执行该块
12     pass

主动触发异常

1 try:
2      raise Exception('错误了。。。')
3  except Exception as e:
4      print e

自定义异常

 1 class test(Exception):
 2 
 3     def __init__(self, msg):
 4         self.message = msg
 5 
 6     def __str__(self):
 7         return self.message
 8 
 9 try:
10     raise test('我的异常')
11 except test as e:
12     print(e)

断言

在 unittest 单元测试框架中,TestCase 类提供了一些方法来检查并报告故障,如下图 :

 

 

 1 #!/usr/bin/env python
 2 #coding=utf-8
 3 __author__ = 'yinjia'
 4 
 5 try:
 6      num = input("Enter a number:")
 7      assert (num == 10), "The number is not 10!"
 8 except AssertionError as msg:
 9      print(msg)
10      print ("Sadly, num not equals to 10")

 

posted @ 2021-05-06 03:01  Jc_code  阅读(969)  评论(0编辑  收藏  举报