首页 > 编程语言 > 详细

【Python面向对象】(13)系统异常以及自定义异常

时间:2020-05-21 19:55:32      阅读:41      评论:0      收藏:0      [点我收藏+]

一、系统异常

 

"""
捕获异常
"""


def test_div(num1, num2):
    """
    除法
    :param num1:
    :param num2:
    """
    return num1/num2


if __name__ == __main__:
    # except后面无异常类型,则默认捕获Exception,则是捕获所有的异常
    try:
        rest1 = test_div(5, 0)
        print(rest1)  # 报错:ZeroDivisionError: division by zero
    except:
        print("报错啦")  # 输出:报错啦,除数不能为0

    # 捕获指定异常
    try:
        rest1 = test_div(5, 0)
        print(rest1)  # 报错:ZeroDivisionError: division by zero
    except ZeroDivisionError:
        print("报错啦,除数不能为0")  # 输出:报错啦,除数不能为0

    try:
        rest2 = test_div(5, s)
        print(rest2)  # 报错:TypeError: unsupported operand type(s) for /: ‘int‘ and ‘str‘
    except TypeError:
        print("报错啦,请输入数字")  # 输出:报错啦,请输入数字

    # 捕获多个异常
    try:
        rest1 = test_div(5, 0)
        print(rest1)  # 报错:ZeroDivisionError: division by zero
    except (ZeroDivisionError, TypeError):
        print("报错啦,除数不能为0或者请输入数字")  # 输出:报错啦,除数不能为0或者请输入数字

 

 

二、自定义异常

 

"""
自定义异常
"""


class MyException(Exception):
    """我的异常类"""
    error_code = ""
    error_msg = ""

    def __init__(self, error_code=None, error_msg=None):
        self.error_code = self.error_code if self.error_code else error_code
        self.error_msg = self.error_msg if self.error_msg else error_msg

    def __str__(self):
        return "Error: {0} - {1}".format(self.error_code, self.error_msg)


class InvalidException(MyException):
    """当参数不合法时触发"""
    error_code = "400"
    error_msg = "两个必须为整数"


def divide(num1, num2):
    """除法"""
    # 两个数必须为整数
    if not isinstance(num1, int) or not isinstance(num2, int):
        raise InvalidException()
    # 除数不能为0
    if num2 == 0:
        raise MyException("401", "除数不能为0")
    return num1/num2


if __name__ == "__main__":
    try:
        res = divide(5, "s")
        print(res)
    except InvalidException as e:
        print(e)
    except MyException as e:
        print(e)

 

【Python面向对象】(13)系统异常以及自定义异常

原文:https://www.cnblogs.com/ac-chang/p/12932766.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!