zoukankan      html  css  js  c++  java
  • 2020-06-04 Python异常处理

    抛出异常

    assert语句

    当assert语句后面的内容是假时,终止程序报出异常(AssertionError)。

    1 ls=[1,2]
    2 assert len(ls)>1
    3 ls.pop()
    4 assert len(ls)>1

    raise语句

    raise [Exception[,args[,traceback]]]

    Exception是异常类型,可以使标准异常中的任何一种,也可以是自己设定的,args是自己提供的异常参数,最后一个参数为跟踪异常对象,一般很少用。

    raise Exception("wrong")

    异常可以有参数,在抛出时会说明自己写入的错误原因。

    编写Exception的常用模板:

    class CustomError(Exception):
        def __init__(self,ErrorInfo):
            super().__init__(self)
            self.errorinfo=ErrorInfo
        def __str__(self):
            return self.errorinfo

    这样就可以使用自己编写的异常去完成这个抛出异常的操作。

    异常种类

    IndexError(索引超出),AttributeError(尝试访问未知的对象属性),KeyError(字典中查找一个不存在的关键字),NameError(尝试访问一个不存在的变量)

    OSError(操作系统产生异常,例:打开不存在的文件),SyntaxError(Python语法错误),ZeroDivisionError(除数为零)

    捕获异常

    try-except语句

    try:
        检测范围 
    except Exceptiom[as reason]:
        出现异常后的处理代码
    
    
    try:
        f=open('1.txt')
        print(f.read())
        f.close()
    except OSError:
        print('wrong')

    针对不同的异常可以设置多个except,同时如果想了解具体异常情况,可以进行reason的输出。

    except OSError as reason:
        print("wrong:"+str(reason))

    对多个异常也可以进行统一处理,捕获所有异常

    ````#捕获多个异常
    except OSError as reason:
        print(''+str(reason))
    except TypeError as reason:
        print(''+str(reason))
    ````#捕获所有异常
    except:
        print("error")
    ````

    try-finally语句

    finally是用来收拾残局的,比如在打开文件后,因为其他的语句出现错误,而导致文件不能正常关闭,那么可能导致文件内容丢失,所以我们需要finally收拾残局。

    try:
        f=open("1.txt")
        print("success")
        sum=1+'1'
        f.close()
    except:
        print("error")
    finally:
        f.close()

    else可以跟在while,try,for后面,但是如果break或者出现异常,else将不会执行。

    使用with语句打开文件不会出现忘记关闭的情况。

    try:
        with open("1.txt"):
            for each_line in f:
                print(each_line)
    except OSError as reason:
        print("error")
  • 相关阅读:
    Consul负载均衡策略记录
    ASP NET CORE开发优化相关专用随笔
    .NET CORE 3.1配置文件读取方式
    CentOS 8 安装.NET CORE 3.1 发布以及运行
    CORE EF生成ORACLE数据库模型报错问题记录
    【转载】一名程序员十年技术之路的思考与感悟
    iview-admin部署linux nginx报500错误的问题记录
    [转]浅谈账号系统设计
    C#使用phantomjs,爬取AJAX加载完成之后的页面
    nginx触屏版跟PC的代理设置
  • 原文地址:https://www.cnblogs.com/threeidiots/p/13041951.html
Copyright © 2011-2022 走看看