python:异常

来源:互联网 发布:手机淘宝怎么找小二 编辑:程序博客网 时间:2024/06/04 19:48

一、exception

(鱼C)python标准异常总结

http://bbs.fishc.com/thread-45814-1-1.html

常谈到的:AssertionError、AttributeError、IndexError(序列中索引值超出实际范围)、KeyError(在字典中查找一个不存在的关键字,用捕获或者get()方法)、NameError(尝试访问不存在的变量)、OSError(操作系统的异常,下边有好多子类FileNotFoundError)、OverflowError、SyntaxError(语法错误)、TypeError(类型异常)、ZeroDivisionError(除数为0异常)

二、检测异常并处理

异常检测可以使用try,有两种形式

try-except语句

try:    检测范围except Exception[as reason]:    出现异常(Exception)后的处理代码

try:    f = open('wobushiwenjian.txt')    print(f.read())    f.close()except OSError:    print('文件出错了')         #这种会打印“文件出错了”,但不会打印为什么出错或者使用asexcept OSError as reason:    print('文件出错了:' + str(reason)) #注意这里使用str!返回:文件出错了: Errno 2] No such file or directory: 'ss'

可以使用多个except

  1 file_name = input('please filename for open:')  2 try:  3     sum = 1 + '1'  4     f = open(file_name)  5     print(f.read())  6     f.close()  7 except OSError as reason:  8     print('文件出错了\n错误原因是:' + str(reason))  9 except TypeError as reason: 10     print('类型出错了' + str(reason)

上栗中当有OSError、TypeError之外的异常时,不能被捕获,照样会挂掉;所以直接使用

except:    print('出错了')

写法会捕获 所有异常,也会捕获到ctrl + c强制关闭程序  (KeyboardError),因此不推荐这么做

注意:try里边的语句前边的语句出现了异常,后边的语句不会被执行

还可以这样写

except (OSError, TypeError):    print('出错了')

这种情况可以加as reason吗?不知道哎,自己去测一下!

try-finally语句

try:    检测范围except Exception[as reason]:    出现异常(Exception)后的处理代码finally:     无论如何都会被执行的代码

如果文件异常出现在文件成功打开之后,关闭文件之前,是有问题的!此时就需要把f.close()放到finally中!

raise语句

代码自己引发出一个异常!

用法:raise ZeroDivisionError('除数为零了')

>>> raiseTraceback (most recent call last):  File "<stdin>", line 1, in <module>RuntimeError: No active exception to reraise>>> 1 / 0Traceback (most recent call last):  File "<stdin>", line 1, in <module>ZeroDivisionError: division by zero>>> raise ZeroDivisionErrorTraceback (most recent call last):  File "<stdin>", line 1, in <module>ZeroDivisionError>>> raise ZeroDivisionError('除数为零了')Traceback (most recent call last):  File "<stdin>", line 1, in <module>ZeroDivisionError: 除数为零了>>> 








0 0
原创粉丝点击