zoukankan      html  css  js  c++  java
  • 异常

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

    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)
  • 相关阅读:
    C#反射(一)
    找回密码
    常用的webservice接口 .
    C# 反射应用技术
    Delphi简介
    C#程序思想简介
    如何跨线程访问window控件
    C#如何判断某个文件夹是否为共享,访问权限为只读
    Delphi基础
    Web Service接口
  • 原文地址:https://www.cnblogs.com/rongpeng/p/12589713.html
Copyright © 2011-2022 走看看