• 异常


    异常的传递,会把异常返回调用处

    try:
        11/0
        #open("xxx.txt")
        print("---1--------")
    except (NameError,FileNotFoundError): #多种类型异常写一起时使用元组方式,具体异常
        print("如果没有捕获到异常后做的处理......")
    except Exception as ret: #捕获所有异常,as可以看到具体异常
        print("如果用了Exception,意味着上面的except没有捕获到异常,这个except一定会捕获到")
        print(ret)
    else:
        print("没有异常才会执行的功能")
    finally:
        print("不管有没有异常都会执行")
    print("----2-----")

    自定义异常

    class ShortInputException(Exception):
        """自定义异常"""
        def __init__(self, length, atleast):
            self.length = length
            self.atleast = atleast
    
    def main():
        try:
            s = input('请输入 --> ')
            if len(s) < 3:
                #raise引发一个自定义的异常
                raise ShortInputException(len(s),3)
        except ShortInputException as result: #这个变量被绑定到了错误的实例
            print('ShortInputExcption:输入的长度是%d,长度至少是%d'%(result.length,result.atleast))
        else:
            print('没有发生异常')
    
    main()

    异常处理中抛出异常

    class Test(object):
        def __init__(self, switch):
            self.switch = switch
    
        def calc(self, a, b ):
            try:
                return a/b
            except Exception as result:
                if self.switch:
                    print("捕获开启,已捕获到了异常,信息如下:")
                    print(result)
                else:
                    #重新抛出异常,此时就不会被这个异常处理捕获,从而触发默认的异常处理
                    raise #默认异常处理,由系统处理
    
    a = Test(True)
    a.calc(11,0)
    
    print("------------------------")
    a.switch = False
    a.calc(11,0)
  • 相关阅读:
    socket的一个错误的解释SocketException以及其他几个常见异常
    lambda表达式和ef的语句转化
    多线程的异步委托初识
    跨线程访问控件的方法
    P1337 [JSOI2004]平衡点 / 吊打XXX
    P4099 [HEOI2013]SAO
    UVA10529 Dumb Bones
    P1291 [SHOI2002]百事世界杯之旅
    P2675 《瞿葩的数字游戏》T3-三角圣地
    P4363 [九省联考2018]一双木棋chess
  • 原文地址:https://www.cnblogs.com/rongpeng/p/12589713.html
Copyright © 2020-2023  润新知