Python基础之day10-异常

Python基础之day10-异常


代码仓库地址: https://gitee.com/andox_yj/python

一、异常介绍

  1. 错误与异常介绍
    • 错误:指Python的语法错误,不能被python解析。错误使程序运行不了。
    • 异常:即便Python程序的语法是正确的,在运行它的时候也有可能发生错误。运行期检测到的错误被称为异常。
  2. 代码示例
    # ################# 错误 ####################
    # for in range(10):
    
    # ################# 异常 ####################
    num = 10 * (1 / 0)  # 0 不能作为除数,触发异常
    # Traceback (most recent call last):
    #   File "<stdin>", line 1, in ?
    # ZeroDivisionError: division by zero
    
    num = 4 + spam * 3  # spam 未定义,触发异常
    # Traceback (most recent call last):
    #   File "<stdin>", line 1, in ?
    # NameError: name 'spam' is not defined
    
    num = '2' + 2  # int 不能与 str 相加,触发异常
    # Traceback (most recent call last):
    #   File "<stdin>", line 1, in <module>
    # TypeError: can only concatenate str (not "int") to str
    

二、异常处理之捕获异常

  1. try except 介绍
    • 使用try except语句可以捕获异常,try except可以配合else或finally一起使用。
    • try可以配合多个except一起使用。
    • except 后面可以不写异常类型,既所有异常类型都执行后面代码
    • 可以嵌套使用,既try里面可以嵌套try,except里面也可以嵌套一个try
  2. 代码示例
    """
    用法:
        try:
            需要捕获异常的代码块
        except 异常类型1 as 异常对象1:
            该异常类型的处理
        except 异常类型2 as 异常对象2:
            该异常类型的处理
        else:
            出现异常且不为以上错误类型的处理
        finally:
            不管出没出现异常,最终都执行的代码
    """
    # ################# try except else finally ####################
    try:
        runoob()
    except Exception as e:
        print(e)  # name 'runoob' is not defined
    else:
        try:
            with open('file.log') as file:
                read_data = file.read()
        except FileNotFoundError as fnf_error:
            print(fnf_error)
    finally:
        print('这句话,无论异常是否发生都会执行。')  # 这句话,无论异常是否发生都会执行。
    

三、异常处理之断言

  1. assert断言介绍:当程序满足或不满足某个条件后,认为的抛出一个异常,避免等程序运行到后面的时候再报错。
  2. assert用法:assert 表达式 (当条件为真时,不触发异常,当条件为假时,触发异常)
    # ################# assert基本使用 ####################
    def zero(num):
        assert num != 0  # 此行报错
        print(1 / num)
    
    
    zero(0)
    
    # ################# assert与try一起使用 ####################
    try:
        # 当表达式为False是,触发异常被try捕获
        assert 3 > 4
    except:
        print('发生了异常')
    

四、异常处理之触发异常

  1. assert断言介绍:当程序满足或不满足某个条件后,认为的抛出一个异常,避免等程序运行到后面的时候再报错。
  2. assert用法:assert 表达式 (当条件为真时,不触发异常,当条件为假时,触发异常)
  3. 代码示例
    # ################# assert基本使用 ####################
    def zero(num):
        assert num != 0
        print(1 / num)
    
    
    zero(0)
    # ################# assert与try一起使用 ####################
    try:
        # 当表达式为False是,触发异常被try捕获
        assert 3 > 4
    except:
        print('发生了异常')
    

五、自定义异常

  1. 介绍:自定义异常就是将一个类继承于Exception类,可以定义自己的属性。然后使用raise触发这个自定义的类,既:raise 类名
  2. 代码示例
    class ShortInputException(Exception):
        """自定义的异常类,继承Exception"""
    
        def __init__(self, length, at_least):
            super().__init__()  # 初始化父类init,这样代码不易报错
            self.length = length
            self.at_least = at_least
    
    
    
    try:
        # 1.输入一个字符串
        character = input('请输入:')
        # 2.如果输入的字符串长度小于3
        if len(character) < 3:
            # 3.raise引发一个定义的异常类,传入两个参数
            raise ShortInputException(len(character), 3)
    # 使用try捕获这个异常,异常类型为类名,最后as取个别名
    except ShortInputException as result:  # result这个变量被绑定到了错误的实例
        print('ShortInputException: 输入的长度是 %d,长度至少应是 %d' % (result.length, result.at_least))
    else:
        print('没有异常发生.')
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值