zoukankan      html  css  js  c++  java
  • 异常处理

    异常处理

    异常概述

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

    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()
    
    
  • 相关阅读:
    小白如何在Windows下使用Redis
    OAuth2.0实例说明
    关于EntityFramework 更新数据记录时字段全部更新问题和不从数据库中获取直接更新记录
    Asp.net Controller中View 和Action方法认证Authorize 及对AuthorizeAttribute扩展
    MidpointRounding 枚举值简要说明
    JavaScript 去空格方法(转部份)
    脏读,不可重复读,幻读 (转)
    20111204 15:36 JAVA实现位向量给无重复元素的整数数组排序
    JAVA String
    CSS样式表的优先级别
  • 原文地址:https://www.cnblogs.com/zhouxiongjie/p/13182195.html
Copyright © 2011-2022 走看看