Python标准异常:
BaseException->所有异常的基类
SystemExit->解释器请求退出
KeyboardInterrupt->用户中断执行(通常是输入^C)
Exception->常规错误的基类
StopIteration->迭代器没有更多的值
GeneratorExit->生成器(generator)发生异常来通知退出
StandardError->所有的内建标准异常的基类
ArithmeticError->所有数值计算错误的基类
FloatingPointError->浮点计算错误
OverflowError->数值运算超出最大限制
ZeroDivisionError->除(或取模)零 (所有数据类型)
AssertionError->断言语句失败
AttributeError->对象没有这个属性
EOFError->没有内建输入,到达EOF 标记
EnvironmentError->操作系统错误的基类
IOError->输入/输出操作失败
OSError->操作系统错误
WindowsError->系统调用失败
ImportError->导入模块/对象失败
LookupError->无效数据查询的基类
IndexError->序列中没有此索引(index)
KeyError->映射中没有这个键
MemoryError->内存溢出错误(对于Python 解释器不是致命的)
NameError->未声明/初始化对象 (没有属性)
UnboundLocalError->访问未初始化的本地变量
ReferenceError->弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError->一般的运行时错误
NotImplementedError->尚未实现的方法
SyntaxError->Python 语法错误
IndentationError->缩进错误
TabError->Tab 和空格混用
SystemError->一般的解释器系统错误
TypeError->对类型无效的操作
ValueError->传入无效的参数
UnicodeError->Unicode 相关的错误
UnicodeDecodeError->Unicode 解码时的错误
UnicodeEncodeError->Unicode 编码时错误
UnicodeTranslateError->Unicode 转换时错误
Warning->警告的基类
DeprecationWarning->关于被弃用的特征的警告
FutureWarning->关于构造将来语义会有改变的警告
OverflowWarning->旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning->关于特性将会被废弃的警告
RuntimeWarning->可疑的运行时行为(runtime behavior)的警告
SyntaxWarning->可疑的语法的警告
UserWarning->用户代码生成的警告
try:
fh = open("testfile", "w")
fh.write("test except!!!")
except IOError:
print ("Error: not found file or read file error")
else:
print("内容写入文件成功")
fh.close()
输出:
内容写入文件成功
结论:
try:
正常的操作
except:
发生异常,执行这块代码
else:
如果没有异常执行这块代码
try:
fh = open("testfile", "w")
try:
fh.write("test except!!!")
finally:
print("关闭文件")
fh.close()
except IOError:
print("Error: 没有找到文件或读取文件失败")
输出:
关闭文件
结论:
1、当在try块中抛出一个异常,立即执行finally块代码。
2、finally块中的所有语句执行后,异常被再次触发,并执行except块代码。
# 定义函数
def convertInt(var):
try:
return int(var)
except Argument as e:
print("参数没有包含数字 ", e)
except ValueError as e:
print("参数没有包含数字 ", e)
convertInt("what21");
输出:
Traceback (most recent call last):
File "D:/ProgramData/PycharmProjects/01.BasicKnowledge/04.Exception/main.py", line 4, in convertInt
return int(var)
ValueError: invalid literal for int() with base 10: "what21"
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:/ProgramData/PycharmProjects/01.BasicKnowledge/04.Exception/main.py", line 9, in 
convertInt("what21");
File "D:/ProgramData/PycharmProjects/01.BasicKnowledge/04.Exception/main.py", line 5, in convertInt
except Argument as e:
NameError: name "Argument" is not definedclass MyError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)
try:
raise MyError(2*2)
except MyError as e:
print("抛出自定义异常, value:", e.value)
输出:
抛出自定义异常, value: 4
结论:
1、通过继承Exception类,来创建一个新的Exception类,可以直接继承或者间接继承。
2、raise指定了要被抛出的异常。