异常
ZeroDivisionError
a = 5
b = 0
c = a / b
运行后报错:
ZeroDivisionError: division by zero
捕捉异常 try - except - else - finally 语句
try:
a = 3
b = 0
c = a / b
except Exception as e:
print("exception: ", e)
else:
print("else")
finally:
print("finally")
运行结果:
exception: division by zero
finally
其中,except语句块 是在异常发生时执行,else 是不发生异常时执行,finally是不管任何情况都会运行
try语句 是用来处理异常的,避免发生异常的情况下程序崩溃
FileNotFoundError
try:
with open('d:/4.txt', 'r') as f:
f.read()
except FileNotFoundError as e:
print('Exception')
有些异常发生时可以一声不吭,有些异常发生时则必须让使用者或开发者知道,这就要根据实际情况写相应的代码进行处理
json.dump将json数据写入到文件中,json.load从文件中读取json数据
import json
fruits = ['apple', 'banana', 'pear']
with open('d:/5.txt', 'w') as f:
json.dump(fruits, f)
运行程序,找到d:/5.txt文件,打开看是否内容就是刚才写入的json数据
import json
with open('d:/5.txt', 'r') as f:
fruits = json.load(f)
print(fruits)
运行结果:
['apple', 'banana', 'pear']
抛出异常 raise
def divid(a, b):
if b == 0:
raise Exception('被除数不能为0')
try:
divid(3, 0)
except Exception as e:
print(e)
运行结果:
被除数不能为0
捕捉到的异常也可以不做处理,继续往外抛
try:
divid(3, 0)
except Exception as e:
raise e
运行结果:
Traceback (most recent call last):
File "E:\tmp\logs\main.py", line 8, in <module>
raise e
File "E:\tmp\logs\main.py", line 6, in <module>
divid(3, 0)
File "E:\tmp\logs\main.py", line 3, in divid
raise Exception('被除数不能为0')
Exception: 被除数不能为0
自定义异常
继承python的异常类Excepton 定义自己的异常类 MyException
class MyException(Exception):
def __init__(self, message):
self.message = message
def __str__(self):
return str(self.message)
def divid(a, b):
if b == 0:
raise MyException('被除数不能为0')
try:
divid(3, 0)
except MyException as e:
print(e)
运行结果:
被除数不能为0
本文内容到此结束,更多内容可关注公众号和个人微信号: