内容简介:异常是程序遇到错误了,这种错误有的是已知的,可预判的。有些是未知的,莫名其妙的。比如,输出
异常是程序遇到错误了,这种错误有的是已知的,可预判的。有些是未知的,莫名其妙的。
比如,
s=1/0 print(s)
输出
Traceback (most recent call last): File "D:/work/Python/Class7.py", line 4, in <module> s=1/0 ZeroDivisionError: division by zero
对于一段代码,如果认为可能出现异常,可以对整段代码进行捕获异常。
try: b=0 s=1/b print(s) except Exception: print('出现异常:没有区分异常的种类')
输出
出现异常:没有区分异常的种类
捕获异常后可以像上面这样打印一个提示,也可以用raise抛出。交由调用的地方去捕获或者处理。
完整的异常捕获其实是这样,
try: b=0 s=1/b print(s) except Exception: print('出现异常:没有区分异常的种类') finally: b=1 s=1/b print(s)
输出
出现异常:没有区分异常的种类 1.0
上面代码中except Exception:处,可以有多个 except,比如,except ZeroDivisionError:。有兴趣可以试试。
对于异常的语法其实大可不必深究和钻研,只需要会在你认为可能出错的地方捕获,然后处理或者抛出异常即可。
捕获异常有一个强大手段就是捕获所有异常,叫Exception,当然很多 程序员 认为捕获所有异常无法彰显出自己的技术是多么的牛逼,所以,会用一用一些编程语言中创建好的有针对性的异常,比如 Python 中有这些是创建好的异常。
Exception,任何异常
AttributeError,引用或则赋值失败异常
IOError,打开不存在的文件的异常
IndexError,使用序列中不存在的索引的异常
KeyError,使用映射中不存在的key的异常
NameError,找不到变量的异常
SyntaxError,代码形式错误的异常
TypeError,函数应用错误的类型的异常
ValueError,对象使用不合适的值的异常
ZeroDivisionError,除数为0的异常
对于有些程序员来说使用库里创建的异常不算本事,所以也可以自己创建异常。哎,如果碰到秀技术的也确实没办法,所以为了万一碰到也好读懂代码,可以简单了解下自定义异常。
class MySelfException(Exception): pass e=MySelfException
使用MySelfException和使用Exception一样。
对于异常,有的时候需要捕获自己处理,但是有的时候宁可让异常抛出甚至中断程序,因为如果为了程序不崩溃而增加异常捕获,会导致有些错误无法知道,从而导致运算结果完全错误,这样造成的结果也许远比程序崩溃要大的多。
工程文件下载: https://download.csdn.net/download/yysyangyangyangshan/10792410
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 用代码说话!机器学习能预测股市吗?
- 少说话多写代码之Python学习002——环境搭建
- 少说话多写代码之Python学习021——导入模块
- 少说话多写代码之Python学习009——字典的创建
- 少说话多写代码之Python学习020——使用逗号输出
- 少说话多写代码之Python学习042——类04(超类 )
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。