python3.7入门系列十二 异常

异常
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

本文内容到此结束,更多内容可关注公众号和个人微信号:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值