• 异常 try ... expect ...


    异常的概念

    代码执行产生错误,无法继续

    异常的产生

    异常处理的目标:代码出现问题,不能让代码停止,继续运行,我们可以来处理这个异常
    方案1:
        if判断:未卜先知----要写if,后面跟着的条件是已知的------事前处理
        缺点:如果出现没有预料到底异常,或报错
    方案2:人体免疫系统----异常机制
        事后处理:出现问题,我们来处理---解决问题  

    异常捕获与处理

    方法一:类似if,可以预知异常

    while True:
        num = input('请输入一个整数: ').strip()
        try#捕获下面语句的异常
           
    print('100/{} = {}'.format(num,100/int(num)))
        except ZeroDivisionError: #一种已知的异常,其他异常无法捕获
           
    print('除数不能为0,请重新输入!')
        except ValueError as error:  #Error异常是一个类函数
           
    print('除数为数字,请重新输入!',error)

    方法二:

    while True:
        num = input('请输入一个整数: ').strip()
        try#捕获下面语句的异常
           
    print('100/{} = {}'.format(num,100/int(num)))
        except Exception: #未知的异常,异常的父类
           
    print('异常了,我来处理')

    方法三:可以输出异常

    while True:
        num = input('请输入一个整数: ').strip()
        try#捕获下面语句的异常
           
    print('100/{} = {}'.format(num,100/int(num)))
        except Exception as ex: #未知的异常,异常的父类
           
    print('异常了,我来处理',ex)

    方法四:较为通用

    while True:
        num = input('请输入一个整数: ').strip()
        try#捕获下面语句的异常
           
    print('100/{} = {}'.format(num,100/int(num)))
        except:
            print('异常了,我来处理')

    方法五:同时有已知异常和未知异常的捕获

    while True:
        num = input('请输入一个整数: ').strip()
        try#捕获下面语句的异常
           
    print('100/{} = {}'.format(num,100/int(num)))
        except ZeroDivisionError:  # 一种已知的异常,其他异常无法捕获
           
    print('除数不能为0,请重新输入!')
        except ValueError as error:  # Error异常是一个类函数
           
    print('除数为数字,请重新输入!', error)
        except:
            print('异常了,我来处理')

    方法六:追溯详细的日志

    import traceback
    while True:
        num = input('请输入一个整数: ').strip()
        try#捕获下面语句的异常
           
    print('100/{} = {}'.format(num,100/int(num)))
        except:
            print('异常了,我来处理',traceback.format_exc()) #详细的报错信息,可以添加到日志中

    例如:

    import traceback
    try:
        fo = open('xx.txt')
    except:
        print('xx.txt文件不存在')

  • 相关阅读:
    使用padding值控制控件的隐藏与显示
    首篇 sdk 之 AlertDialog
    eclipse中svn项目重定向地址
    Activity回传值报错:Failure delivering result ResultInfo{who=null,request=7,result = 0,data=null}
    常见字符集&乱码问题
    rhel 6.x 使用 udev scsi rules 配置裸设备
    rsync 同步文件
    debian 8.2 + apt-get + mongodb 3.2 + replica set
    debian 8.2 + apt-get + mongodb 3.2
    oracle virtualbox 扩大虚拟机硬盘
  • 原文地址:https://www.cnblogs.com/like1824/p/12796329.html
Copyright © 2020-2023  润新知