说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在确保语法正确以后,接着尝试执行代码,先现还是会抛出错误,代码无法正常运行。这里有两方法的原因,一方面是代码之间交互时无法从数据类型、逻辑上自洽,比如上一句代码产出的值类型下一句接收不了。另一方面是数据不完整或者计算错误,比如本来一个函数需要两个参数,但只传了一个。
我们来看看一个最最常见的异常,就是 0 不能做分母:
>>> 1/0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
再来看一下索引超出范围的:
>>> 'hello'[10]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
我们发现,报错的信息的最后一行不再是 SyntaxError
等语法错误,不过我们还是从异常类型上看出哪儿出了问题。ZeroDivisionError
和 IndexError
就是异常类型,后边紧跟着就是异常的具体解释。
我们开发程序可以自己定义异常的类型,后边会讲到。Python 内置异常的常见的有:
异常 | 描述 |
---|---|
AssertionError | assert(断言)语句失败 |
AttributeError | 访问的对象没有属性 |
IOError | 输入/输出异常,打不开文件 |
ImportError | 无法引入包 |
IndentationError | 缩进问题 |
IndexError | 索引超出边界 |
KeyError | 访问字典里不存在键 |
KerboardInterrupt | Ctrl + C 被按下中止执行 |
NameError | 没有定义赋值变量 |
SyntaxError | 语法错误 |
TypeError | 传入对象类型与要求的不符 |
UnboundLocalError | 试图访问一个还未被设置的局部变量 |
ValueError | 传入一个调用者不期望的值,即使值的类型是正确的 |
ZeroDivisionError | 除零了 |
OSError | 操作系统错误 |
更多:https://docs.python.org/zh-cn/3/library/exceptions.html
对于异常我们在编程中尽量避免,不要让代码出现这些异常,常见的做法就是多做类型检测,多做空值检测等等。但是,如果用以上的方法去做的话会让代码很复杂,同时也解决不了所有问题。
Python 提供了异常的捕获和处理,我们捕获到指定类型异常后进行分支处理。
更新时间:2024-04-11 10:24:05 标签:python 异常