1. 异常
我自己简单粗暴的理解,程序运行出现问题和错误(如,文件不存在),交互时网络出现错误(如,通讯超时),亦或是发生系统错误(如,空间满了),都可以认为是异常。
代码中常见的异常:ZeroDivisionError\NameError\TypeError等
2. 如何捕获和处理异常
2.1 Python 异常处理语法如下:
# 语法
try:
程序执行语句块
except Exception as alias:
异常处理语句块
...
else:
无异常时处理语句块
finally:
必须的处理语句块
2.2 Python的内置异常与自定义异常
一切的异常都是类,父类:Exception
异常 | 描述 |
---|---|
AttributeError | 试图访问一个对象没有的属性 |
IOError | 输入、输出异常 |
ImportError | 无法引入模块或包;多是路径问题或名称错误 |
IndentationError | 缩进错误 |
IndexError | 下标索引错误 |
KeyError | 试图访问不存在的键 |
KeyboardInterrupt | Ctrl+C 被按下,键盘终止输入 |
NameError | 使用未定义的变量 |
SyntaxError | 语法错误 |
TypeError | 传入对象的类型与要求的不符合 |
UnboundLocalError | 试图访问一个还未被设置的局部变量 |
ValueError | 传入一个调用者不期望的值,即使值的类型是正确的 |
自定义异常方法如下:
# 自定义异常举例:cusError文件夹下创建文件 TransformError.py
class TransformError(Exception):
def __init__(self, errorCode=50000, message='transformError'):
self.errorCode = errorCode
self.message = message
def __str__(self): # 不打印xx.class, 更人性化
return "[%d] %s" % (self.errorCode, self.message)
# 调用
from cusError import TransformError
try:
a = int('abc')
raise TransformError(50001, "TransformError")
except Exception as e:
print(type(e))
print(e)
finally:
pass
2.3 主动抛出异常
raise:抛出捕获到的异常(交由调用者处理)
若 raise 后不带参数,则表示将Exception内容原封不动抛出
3. pycharm程序调试方法
step over: 一条条执行;快捷键 F8
run to cursor: 下一个断点;快捷键 F9