zoukankan      html  css  js  c++  java
  • Python3 从零单排22_异常处理

      异常分为两类,可预知和不可预知。

      错误发生的条件如果是可以预知的,此时应该用if判断去预防异常

    AGE=10
    age=input('>>: ').strip()
    
    if age.isdigit():
        age=int(age)
        if age > AGE:
            print('太大了')

      

      错误发生的条件如果是不可预知的,此时应该用异常处理机制,try...except

    try:
        f=open('a.txt','r',encoding='utf-8')
    
        print(next(f),end='')
        print(next(f),end='')
        print(next(f),end='')
        print(next(f),end='')
    
        print(next(f),end='')
        print(next(f),end='')
        print(next(f),end='')
        f.close()
    except StopIteration:
        print('出错啦')
    
    print('====>1')
    
    #多分支:被监测的代码块抛出的异常有多种可能性,并且我们需要针对每一种异常类型都定制专门的处理逻辑
    try:
        print('===>1')
        # name
        print('===>2')
        l=[1,2,3]
        # l[100]
        print('===>3')
        d={}
        d['name']
        print('===>4')
    
    except NameError as e:
        print('--->',e)
    
    except IndexError as e:
        print('--->',e)
    
    except KeyError as e:
        print('--->',e)
    
    print('====>afer code')
    
    #万能异常:Exception,被监测的代码块抛出的异常有多种可能性,
    # 并且我们针对所有的异常类型都只用一种处理逻辑就可以了,那就使用Exception
    try:
        print('===>1')
        # name
        print('===>2')
        l=[1,2,3]
        l[100]
        print('===>3')
        d={}
        d['name']
        print('===>4')
    
    except Exception as e:
        print('异常发生啦:',e)
    
    print('====>afer code')
    
    try:
        print('===>1')
        # name
        print('===>2')
        l=[1,2,3]
        # l[100]
        print('===>3')
        d={}
        d['name']
        print('===>4')
    
    except NameError as e:
        print('--->',e)
    
    except IndexError as e:
        print('--->',e)
    
    except KeyError as e:
        print('--->',e)
    
    except Exception as e:
        print('统一的处理方法')
    
    
    print('====>afer code')
    
    #其他结构
    try:
        print('===>1')
        # name
        print('===>2')
        l=[1,2,3]
        # l[100]
        print('===>3')
        d={}
        d['name']
        print('===>4')
    
    except NameError as e:
        print('--->',e)
    
    except IndexError as e:
        print('--->',e)
    
    except KeyError as e:
        print('--->',e)
    
    except Exception as e:
        print('统一的处理方法')
    
    else:
        print('在被检测的代码块没有发生异常时执行')
    
    finally:
        print('不管被检测的代码块有无发生异常都会执行')
    
    # print('====>afer code')
    
    # finally的应用
    try:
        f=open('a.txt','r',encoding='utf-8')
        print(next(f))
        print(next(f))
        print(next(f))
        print(next(f))
    
        print(next(f))
        print(next(f))
    finally:
        f.close()

      

      自定义异常

    class XgError(BaseException):
        def __init__(self,msg):
            self.msg = msg
    
        def __str__(self):
            return self.msg
    
    
    try:
        raise XgError("自定义的异常!")
    
    except Exception as e:
        print(e)
  • 相关阅读:
    Linux文件属性之用户和组基础知识介绍
    企业案例-文件删除企业生产故障模拟重现(未完成待续)
    Linux文件属性之Linux文件删除重要原理详解
    Linux文件属性之软硬连接知识深度详解
    Linux文件权限基础知识
    Linux文件属性拓展知识
    Linux 文件和目录的属性及权限
    linux优化之优化开机自启动服务
    (企业面试)描述Linux系统的启动过程?
    Linux企业面试题(一)
  • 原文地址:https://www.cnblogs.com/znyyy/p/10144747.html
Copyright © 2011-2022 走看看