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()
    
    
  • 相关阅读:
    chrome设置中显示“由贵单位管理”的解决办法
    使用Record Espresso test脚本录制功能
    win10启动.net framework 3.5失败的解决办法
    Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncExceptio解决办法
    Python+Selenium学习--自动化测试用例实例
    linux之awk命令(转载)
    linux之shell1
    linux之egrep命令
    linux之grep命令
    python3安装pcap遇到的问题
  • 原文地址:https://www.cnblogs.com/zhouxiongjie/p/13182195.html
Copyright © 2011-2022 走看看