首页 > 编程语言 > 详细

Python中的异常和断言

时间:2020-06-05 13:54:51      阅读:22      评论:0      收藏:0      [点我收藏+]
>> 异常

1.定义语法
try:
# 执行代码块(可能存在异常)
except ExceptionName1,...,ExceptionNamen:
# 发生异常处理的代码
else:
# 没有发生异常会处理的代码
finally:
# 不管是否有异常都会执行的代码块

 常用:
  try:
     # 代码片段
  except:
     # 异常执行代码


2.手动抛出异常
raise ExceptionName(args)

raise ZeroDivisionError("除数为0")

3.使用traceback模块打印异常信息
导入模块:
import traceback

异常模块打印日志:
print(traceback.format_exc())

>> 断言(assert)

1.定义语法
assert 条件[,提示信息]
条件=True,断言通过:不会抛出AssertionError异常,执行提示语;
条件=False,断言不通过:会抛出AssertionError异常,执行提示语

num2 = 0
assert num2 != 0, "除数不能为0"

>> 代码示例
# python中的异常

import traceback


def func_division(num1, num2):
    """
    计算除法函数
    :param num1: 被除数
    :param num2: 除数
    :return: 商
    """
    try:
        result = num1 / num2
    except ZeroDivisionError:
        # 指定异常类型,使用traceback模块打印异常信息
        print(traceback.format_exc())
    except Exception as e:
        # 抛出非指定的异常时执行
        print(e.args)
    else:
        # 没有异常时执行(可选模块)
        print("no problem!!!,result={0}".format(result))
        return result
    finally:
        # 不管有没有异常都会执行(可选模块)
        print("always execute!!!")
        # return 3 (如果finally中有return,那么会先返回出去不会返回其他的return,一般不建议添加return)

def func_division2(num1, num2):
    """
    计算除法函数
    :param num1: 被除数
    :param num2: 除数
    :return: 商
    """
    # assert num2 != 0, "除数不能为0"
    if num2 == 0:
        raise ZeroDivisionError("除数为0")
    return num1 / num2


if __name__ == "__main__":
    print(func_division(4,2))

>> 自定义异常
  python中自定义异常类需要直接或间接的继承Exception类,建议异常类命名一般都是以“Error”后缀,如:MyException1Error

>> 自定义异常代码示例
# python中的自定义异常
import traceback
class MyException1Error(Exception):

    def __init__(self,msg):
        self.msg = msg

def func_method():
    num = input("请输入数字:")
    if not num.isdigit():
        raise MyException1Error("NOT A NUMBER!!!")
    else:
        print("输入正确,输入的是:" + num)

if __name__ == "__main__":
    try:
        func_method()
    except MyException1Error:
        print(traceback.format_exc())

 

Python中的异常和断言

原文:https://www.cnblogs.com/jason2018524/p/13049275.html

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