• 异常处理


    异常处理

    异常概述

    在程序运行的过程中会遇到各种各样的错误,这些错误统称为异常

    python中常见的异常

    异常 描述
    BaseException 能捕获所有异常
    Exception 能捕获常见的异常类型
    NameError 尝试访问一个没有声明的变量引发的错误
    IndexError 索引超出序列范围应发的错误
    IndentationError 缩进错误
    ValueError 传入的值错误
    KeyError 请求一个不存在的字典关键字引发的错误
    IOError 输入输出错误(如要读取的文件不存在)
    ImporError 导入模块时未找到相应的名称时引发的错误
    AttributeError 尝试访问未知的对象属性引发的错误
    TypeError 类型不合适引发的错误
    MemoryError 内存不足
    ZeroDivisionError 除数为0引发的错误

    异常处理语句

    try......except语句

    语法格式如下:

    block:表示可能出现错误的代码块

    [ExceptionName [as alias]]:可选参数,用于指定要捕获的异常。其中ExceptionName表示要捕获的异常名称,as alias表示给异常指定一个别名,通过该别名,可以记录异常的具体内容

    如果未指定异常名称,则默认捕获全部异常

    try:
        block1
    except [ExceptionName [as alias]]
    	block2
    

    try......except......else语句

    在try......except语句上增加了else语句,主要作用是在try语句没有发现异常都是执行else语句,发现异常时不执行else语句

    try:
        num = int(input('请输入数字:'))
    except ValueError as e:
        print('输入错误!')
        raise e
    else:
        print('没有错误!')
    

    try......except......else......finally语句

    在try......except......else语句上增加了finally语句,主要作用是无论程序是否产生异常,finally中的语句都将被执行

    try:
        y = int(input('请输入数字:'))
    except ValueError as e:
        print('输入错误!')
        raise e
    else:
        print('没有错误!')
    finally:
        print('无论是否有错误,都将被执行')
    

    使用raise语句抛出异常

    如果某个函数或方法可能会产生异常,但不想在当前函数或方法中处理这个异常,则可以使用raise语句在函数或方法中抛出异常

    def test():
        a = int(input('请输入数字A:'))
        b = int(input('请输入数字B:'))
        if a == '':
            raise TypeError('类型错误')
    
    
    if __name__ == '__main__':
        try:
            test()
        except ValueError:
            print('类型错误')
    

    用户自定义异常

    # 自定义一个超长的异常类型
    class LongExceptin(Exception):
        def __init__(self, leng):
            self.leng = leng
    
        def __str__(self):
            print('姓名的长度是' + str(self.leng) + '超过长度了')
    
    
    def name_Test():
        name = input("enter your naem:")
        if len(name) > 4:
            raise LongExceptin(len(name))
        else:
            print(name)
    
    
    if __name__ == '__main__':
        name_Test()
    
    
  • 相关阅读:
    MongoDB-基础-limit-skip-sort
    MongoDB-基础-条件操作符
    mongodb-基础-update-remove
    Linq to sql-存储过程
    SQL Server-游标使用
    JavaScript-求时间差
    HTTP 错误 500.21
    .NET错误The 'targetFramework' attribute in the <compilation> element of the Web.config file is used only to target version 4.0 and later of the .NET Framework
    HTTP 错误 500.21
    WebApi&MVC对比
  • 原文地址:https://www.cnblogs.com/zhouxiongjie/p/13182195.html
Copyright © 2020-2023  润新知