python3.7入门系列十二 异常

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bowei026/article/details/90140229

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

扫描二维码关注公众号,回复: 6514715 查看本文章


def divid(a, b):
    if b == 0:
        raise MyException('被除数不能为0')

try:
    divid(3, 0)
except MyException as e:
    print(e)

运行结果:
被除数不能为0

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

猜你喜欢

转载自blog.csdn.net/bowei026/article/details/90140229
今日推荐