1 概述

1.1 异常示例

示例代码

v = 6 / 0  # 除数不能为 0

print(v)

执行结果
**在这里插入图片描述

2 异常处理

2.1 捕获异常 try except

# try:常规程序
try:
    v = 6 / 0
    print(v)
# except: 捕获异常(捕获到就停止) 
except ZeroDivisionError:  # 测试 IOError
    print('被除数不能为 0')
except Exception as e:  # 常规异常的基类
    print(f'仅异常未被上述捕获时,执行此处,{e}')
# else:仅无异常时,执行
else:
    print('仅无异常时,执行')
# 无论是否异常,均执行
finally:
    print('无论是否异常,均执行')

2.2 抛出异常 raise

try:
    a = input("输入一个数:")
    # 判断用户输入是否数字
    if not a.isdigit():
        raise ValueError("a 必须是数字")
except ValueError as e:
    # 返回异常信息
    print(e)  # a 必须是数字
    # 返回对象规范字符串表示形式
    print("引发异常:", repr(e))  # 引发异常:ValueError('a 必须是数字')

3 异常类型

3.1 内置异常

内置异常 描述信息
ZeroDivisionError 除以零的错误
ValueError 错误,通常与数据类型转换相关
TypeError 类型错误操作支持数据类型
FileNotFoundError 文件未找到错误
Error  # 了解即可输入 Error,会提示所有的标准异常

在这里插入图片描述

3.2 自定义异常

class MyError(Exception):
    def __init__(self, code, message):
        self.code = code
        self.message = message

    def __str__(self):
        return f"{self.code}: {self.message}"


def divide(a, b):
    if b == 0:
        raise MyError(400, "除数不能为0")
    return a / b


if __name__ == '__main__':
    try:
        result = divide(6, 0)
    except MyError as e:
        print(e)  # 400: 除数不能为0

原文地址:https://blog.csdn.net/qq_34745941/article/details/134708475

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_18803.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注