目录
什么是异常
异常是一个python对象,它会影响正常程序的进行,如果不抛出,会终止程序。
常见异常
BaseException | 所有异常的基类 |
IOError | 输入输出错误 |
Exception | 常见错误的基类 |
ZeroDivisionError | 取0错误 |
RuntimeError | 运行错误 |
异常的处理
1.try—except—else
- try是是开始有异常的捕捉块
- except捕捉不同的异常,执行捕捉该异常后的处理语句
- else则是没有异常时执行的语句
try:
f1 = open('filename','w','utf-8')
f1.write('wwwwwwww')
except IOError:
print('没有找到')
else:
print('成功')
f1.close()
2.try—except—else—finally
- try是是开始有异常的捕捉块
- except捕捉不同的异常,执行捕捉该异常后的处理语句
- else则是没有异常时执行的语句
- finally是不管有没有异常都要执行的语句
try:
f1 = open('filename','w','utf-8')
f1.write('wwwwwwww')
except IOError:
print('没有找到')
else:
print('成功')
f1.close()
finally:
print('我一定执行')
3.raise抛出异常
创建一个异常的对象,可以层层向上抛出异常
def nozero():
m = input()
if 0 not in m:
return m
e = Exception("请不要输入0")
raise e
try:
pp = nozero()
print(pp)
except Exception:
print(Exception)
注意事项
发生异常时,执行第一个匹配该异常的except子句,所以第一个的异常类通常比第二个子类要小
如ValueError 是 Exception 的子类
a = (2,3,-4,5,6)
total = 0
try:
for e in a:
if e < 0:
raise ValueError(str(e) + '数值不能为负')
else:
total += e
except ValueError:
print('数值不能为负')
except Exception:
print('发生异常')
else:
print(total)
finally:
print("这是一个异常的deom")
则结果是:
如Exception 是 ValueError 的子类
a = (2,3,-4,5,6)
total = 0
try:
for e in a:
if e < 0:
raise ValueError(str(e) + '数值不能为负')
else:
total += e
except Exception:
print('发生异常')
except ValueError:
print('数值不能为负')
else:
print(total)
finally:
print("这是一个异常的deom")
则结果是:
JAVA的异常与python相似: