首页 > 技术文章 > python--异常处理

wanghl-3115 2017-07-07 14:53 原文

异常处理

  异常处理是为了让程序出错后,既能捕获到异常,又不影响程序运行。

  异常处理的关键字是【try...except...finally...】,即先要考虑到这段代码可能会出现什么样的错误,然后做对应的处理,

  try里面就是包含你做处理的代码,except里面就是出了某种错误的时候,怎么去处理,finally里面是不管出不出异常,

  都处理这里的代码;还有一个else,就是不出异常时如何处理。

  下面是一个异常处理的例子

 1 def exc(a,b):
 2     try:
 3         c=a/b
 4     except Exception as e:
 5         print('出错了,所有类型错误,错误是%s' %e)
 6     except KeyError as e:
 7         print('Key出错了')
 8     else:
 9         print('这里没有出错')
10         return c
11     finally:
12         print('出没没错咱都走这里,多用于数据库关闭')

常见的异常信息

 1 AttributeError: 试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x
 2  
 3 IOError:输入/输出异常,一般是无法打开文件
 4  
 5 ImportError: 无法导入模块或包,一般是路径问题或名称错误
 6  
 7 IndentationError:代码没有正确对齐,属于语法错误
 8  
 9 IndexError:下标索引超出序列边界,比如x只有三个元素,却试图访问x[3]
10  
11 KeyError:试图访问字典里不存在的键
12  
13 KeyboardInterrupt:Ctrl+C被按下
14  
15 NameError:使用一个还未被赋予对象的变量
16  
17 SyntaxError: 语法错误
18  
19 TypeError: 传入对象类型与要求的不符
20  
21 UnboundLocalError:试图访问一个还未被设置的局部变量,一般是由于在代码块外部还有另一个同名变量
22  
23 ValueError: 传入一个调用者不期望的值,即使值的类型是正确的

主动抛出异常

  有时程序需要我们主动抛出异常,此时需要使用【raise】来完成.

1 def is_corrent_sql(sql):
2     #select insert delete update
3     sql_start=['select','insert','delete','update']
4     for start in sql_start:
5         if sql.startswith(start):
6             pass
7         else:
8             raise TypeError     #主动抛出异常,自定义异常
9 is_corrent_sql('sss')

 

推荐阅读