精华内容
下载资源
问答
  • python自定义异常和主动抛出异常 自定义异常主要是利用了自己定义的异常类的名字,对异常进行分门别类,再没有别的作用 import re import os class ExistsError(Exception): pass class KeyInvalidError...

    python自定义异常和主动抛出异常

    自定义异常主要是利用了自己定义的异常类的名字,对异常进行分门别类,再没有别的作用

    import re
    import os
    class ExistsError(Exception):
        pass
    class KeyInvalidError(Exception):
        pass
    def fun(path,mnk):
        """
        去path路径的文件中,找到前缀为prev的一行数据,获取数据并返回给调用者。
            1000,成功
            1001,文件不存在
            1002,关键字为空
            1003,未知错误
            ...
        :return:
        """
        response = {'code': 1000, 'data': None}
        try:
            with  open(path,encoding="utf-8") as f1:
                line=f1.readline()
                str = re.match("mnk", line)
            if not os.path.exists(path):
                raise Exception() #抛出的是ExistsError类的一个实例
            if not str:
                raise KeyInvalidError()
    
        except ExistsError as e:                #下面的捕获异常是逐行往下匹配的,只要捕获到异常就不往下执行了
            response['code']=1003               #捕获异常以后可以做一些自己定义的东西
            print(response['code'])
        except Exception as e:                  #**自己定义多个异常类名的目的就是将来区分不同的错误类型,再没有别的意思
            response['code'] = 1004
            print(response['code'])
    fun(r"E:\day26\s15day26\test", "p")

     

    下面是对主动抛出异常的一点总结

    #知识点:如何自定义类
    class MyException(Exception):                   #让MyException类继承Exception
        def __init__(self,name,age):
            self.name = name
            self.age = age
    try:
        #知识点:主动抛出异常,就是实例化一个异常类
        raise MyException("zhansgan",19)            #实例化一个异常,实例化的时候需要传参数
    except MyException as obj:                      #这里体现一个封装,
        print(obj.age,obj.name)                     #捕获的就是MyException类携带过来的信息
    
    except Exception as obj:                        #万能捕获,之前的可能捕获不到,这里添加Exception作为保底
        print(obj)
    

      

    转载于:https://www.cnblogs.com/zhuhaofeng/p/9567282.html

    展开全文
  • 平常用的时候仅仅知道with相当于try…expect 抛出异常的作用 对于with来说,其底层的实现原理记忆的并不是很清晰 于是我自己做了一个小代码进行测试,以下就是我定义的代码 ######################################...

    今天做多GPU处理手写数字识别的时候对with方法记得不是很清楚了

    平常用的时候仅仅知道with相当于try…expect 抛出异常的作用

    对于with来说,其底层的实现原理记忆的并不是很清晰


    于是我自己做了一个小代码进行测试,以下就是我定义的代码

    ########################################################################
    class A:
        #----------------------------------------------------------------------
        def __init__(self):
            self.a = 0
        #----------------------------------------------------------------------
        def __enter__(self):
            print("in enter")
        #----------------------------------------------------------------------
        def __exit__(self, exc_type, exc_val, exc_tb):
            print("3 is not div 0")
            print("in exit")           
            
    if __name__ == "__main__":
        a = A()
        with a :
            print("I'm here")
            print(3/0)
        print("helel")
    

    不难发现,在执行with中的程序的时候会出现除0报错的问题

    但是with的整个流程是什么样的呢?

    我们看看运行的结果:

    控制台的窗口打印的信息是:
    在这里插入图片描述
    从打印的流程中,我们不难看出

    首先当程序运行到with的时候

    会进入def __enter__(self):的方法中

    其次会运行with方法中的程序,比如上面的I'm here

    但是当运行到 3/0的时候,会发现出现异常了

    会直接进入到__exit__的方法中,打印exit中的内容

    最后抛出异常


    我们再次假设,如果with中没有异常,还会执行__exit__的方法么? 答案:是的

    我们稍微更改一下代码

    class A:
    
        #----------------------------------------------------------------------
        def __init__(self):
            """Constructor"""
            self.a = 0
        #----------------------------------------------------------------------
        def __enter__(self):
            print("in enter")
        #----------------------------------------------------------------------
        def __exit__(self, exc_type, exc_val, exc_tb):
            print("3 is not div 0")
            print("in exit")           
            
    if __name__ == "__main__":
        a = A()
        with a :
            print("I'm here")
            print("3/0")
        print("helel")
    

    我们将3/0的代码变成了字符串,这样就不会报错了

    打印的结果如下所示:

    in enter
    I'm here
    3/0
    3 is not div 0
    in exit
    helel
    

    通过打印的结果,我们可以得出一个结论就是:

    with在执行的过程中,在with中的代码,不论是否报错都将会执行__enter____exit__函数

    但是,当执行到问题程序的时候,会直接进入到__exit__函数中退出。

    猜想基于以上的问题,我们似乎可以把with方法看做是一个线程锁。

    展开全文
  • python中try Except抛出异常使用方法

    万次阅读 多人点赞 2018-02-11 10:56:46
    对于python自动化测试同学来讲try的作用太大了。 我们要保证每条用例都能得到我们预期并在测试报告中给正确的pass或fail的结果 就可以通过try语句来很好的实现,并且能保证这个pass或fail的结果是真实的。 一、...

    对于python自动化测试同学来讲try的作用太大了。

     

    我们要保证每条用例都能得到我们预期并在测试报告中给出正确的pass或fail的结果

     

    就可以通过try语句来很好的实现,并且能保证这个pass或fail的结果是真实的。

     

     

    一、try语句

    通常我们会用下面的格式:

     

    这里当xxxx1成立时就执行else下的xxxx3语句;

    当xxxx1不成立时就执行except下的xxxx2语句

    不管xxxx1是否成立,finally下的语句都会被执行到

     

    以上的这些格式就可以用在我们用例的判断场景中,从而得到pass或fail的结果

     

    二、except类型(抛出异常的类型)

    1、 捕获所有异常:

    try:
       
    xxxx1
    except Exception as e:
       
    print(e) #打印所有异常到屏幕

     

    2、 捕获类型的异常:

    try:
       
    xxxx1
    except TypeError as e:
       
    print(e) #打印类型异常到屏幕

     

    有很多异常的类型,有可以自己写一个自己的异常类,然后来调用。

    异常类型:

    异常名称

    描述

    BaseException

    所有异常的基类

    SystemExit

    解释器请求退出

    KeyboardInterrupt

    用户中断执行(通常是输入^C)

    Exception

    常规错误的基类

    StopIteration

    迭代器没有更多的值

    GeneratorExit

    生成器(generator)发生异常来通知退出

    SystemExit

    Python 解释器请求退出

    StandardError

    所有的内建标准异常的基类

    ArithmeticError

    所有数值计算错误的基类

    FloatingPointError

    浮点计算错误

    OverflowError

    数值运算超出最大限制

    ZeroDivisionError

    (或取模) (所有数据类型)

    AssertionError

    断言语句失败

    AttributeError

    对象没有这个属性

    EOFError

    没有内建输入,到达EOF 标记

    EnvironmentError

    操作系统错误的基类

    IOError

    输入/输出操作失败

    OSError

    操作系统错误

    WindowsError

    系统调用失败

    ImportError

    导入模块/对象失败

    KeyboardInterrupt

    用户中断执行(通常是输入^C)

    LookupError

    无效数据查询的基类

    IndexError

    序列中没有没有此索引(index)

    KeyError

    映射中没有这个键

    MemoryError

    内存溢出错误(对于Python 解释器不是致命的)

    NameError

    未声明/初始化对象 (没有属性)

    UnboundLocalError

    访问未初始化的本地变量

    ReferenceError

    弱引用(Weak reference)试图访问已经垃圾回收了的对象

    RuntimeError

    一般的运行时错误

    NotImplementedError

    尚未实现的方法

    SyntaxError

    Python 语法错误

    IndentationError

    缩进错误

    TabError

    Tab 和空格混用

    SystemError

    一般的解释器系统错误

    TypeError

    对类型无效的操作

    ValueError

    传入无效的参数

    UnicodeError

    Unicode 相关的错误

    UnicodeDecodeError

    Unicode 解码时的错误

    UnicodeEncodeError

    Unicode 编码时错误

    UnicodeTranslateError

    Unicode 转换时错误

    Warning

    警告的基类

    DeprecationWarning

    关于被弃用的特征的警告

    FutureWarning

    关于构造将来语义会有改变的警告

    OverflowWarning

    旧的关于自动提升为长整型(long)的警告

    PendingDeprecationWarning

    关于特性将会被废弃的警告

    RuntimeWarning

    可疑的运行时行为(runtime behavior)的警告

    SyntaxWarning

    可疑的语法的警告

    UserWarning

    用户代码生成的警告

     

    展开全文
  • 对于python自动化测试同学来讲try的作用太大了。 我们要保证每条用例都能得到我们预期并在测试报告中给正确的pass或fail的结果 就可以通过try语句来很好的实现,并且能保证这个pass或fail的结果是真实的。 ...

    参考链接: Python中的try和except

    对于python自动化测试同学来讲try的作用太大了。

     

    我们要保证每条用例都能得到我们预期并在测试报告中给出正确的pass或fail的结果

     

    就可以通过try语句来很好的实现,并且能保证这个pass或fail的结果是真实的。

     

     

    一、try语句

    通常我们会用下面的格式:

     

     

    这里当xxxx1成立时就执行else下的xxxx3语句;

    当xxxx1不成立时就执行except下的xxxx2语句

    不管xxxx1是否成立,finally下的语句都会被执行到

     

    以上的这些格式就可以用在我们用例的判断场景中,从而得到pass或fail的结果

     

    二、except类型(抛出异常的类型)

    1、 捕获所有异常:

    try:    xxxx1except Exception as e:    print(e) #打印所有异常到屏幕

     

    2、 捕获类型的异常:

    try:    xxxx1except TypeError as e:    print(e) #打印类型异常到屏幕

     

    有很多异常的类型,有可以自己写一个自己的异常类,然后来调用。

    异常类型:

    异常名称描述BaseException所有异常的基类SystemExit解释器请求退出KeyboardInterrupt用户中断执行(通常是输入^C)Exception常规错误的基类StopIteration迭代器没有更多的值GeneratorExit生成器(generator)发生异常来通知退出SystemExitPython 解释器请求退出StandardError所有的内建标准异常的基类ArithmeticError所有数值计算错误的基类FloatingPointError浮点计算错误OverflowError数值运算超出最大限制ZeroDivisionError除(或取模)零 (所有数据类型)AssertionError断言语句失败AttributeError对象没有这个属性EOFError没有内建输入,到达EOF 标记EnvironmentError操作系统错误的基类IOError输入/输出操作失败OSError操作系统错误WindowsError系统调用失败ImportError导入模块/对象失败KeyboardInterrupt用户中断执行(通常是输入^C)LookupError无效数据查询的基类IndexError序列中没有没有此索引(index)KeyError映射中没有这个键MemoryError内存溢出错误(对于Python 解释器不是致命的)NameError未声明/初始化对象 (没有属性)UnboundLocalError访问未初始化的本地变量ReferenceError弱引用(Weak reference)试图访问已经垃圾回收了的对象RuntimeError一般的运行时错误NotImplementedError尚未实现的方法SyntaxErrorPython 语法错误IndentationError缩进错误TabErrorTab 和空格混用SystemError一般的解释器系统错误TypeError对类型无效的操作ValueError传入无效的参数UnicodeErrorUnicode 相关的错误UnicodeDecodeErrorUnicode 解码时的错误UnicodeEncodeErrorUnicode 编码时错误UnicodeTranslateErrorUnicode 转换时错误Warning警告的基类DeprecationWarning关于被弃用的特征的警告FutureWarning关于构造将来语义会有改变的警告OverflowWarning旧的关于自动提升为长整型(long)的警告PendingDeprecationWarning关于特性将会被废弃的警告RuntimeWarning可疑的运行时行为(runtime behavior)的警告SyntaxWarning可疑的语法的警告UserWarning用户代码生成的警告

    展开全文
  • 大部分的异常都继承自Exception这个类(而这个类有继承自...抛出一个异常  下面这个类的作用是:添加偶数到列表中去。 # 添加偶数到列表中:这个类继承了内置的list对象 class EvenOnly(list): def append...
  • Python异常

    2018-10-17 19:03:45
    @异常 python异常 异常是程序出错误时标识一种状态 当异常发生时,程序不会再向下执行,而转去调用此函数地方待处理此错误并恢复为正常状态。...触发异常(抛出异常),让程序进入异常流程 assert 语句...
  • 我们在编写代码的时候, 不知道程序会在什么时候崩溃, 与其让它在深度运行时崩溃, 不如预先测试一个条件, 条件为真方可继续运行, 否则的话就让它立即崩溃掉(先抛出异常信息, 然后退出). assert语句的作用 断言(声明)...
  • python assert的作用

    2019-07-18 10:32:21
    应该是抛出异常的作用。比如: assert p.shape == q.shape, “Shape of the two distribution batches must be the same” 就是当这个等式条件不满足时,抛出后面语句的异常信息。 ...
  • python的作用

    千次阅读 2014-02-26 13:32:02
    python中,变量查找遵循LGB原则,即优先在局部作用域(local scope)中对变量进行查找,失败则在全局作用域(global scope)中进行查找,最后尝试再内建作用域(build-in scope)内查找,如果还是未找到话,则抛出异常...
  • 当程序出错时候就会抛出异常,比如IndexError\ KeyError\ NameError\ IndentationError\ AttributeError\ StopIteration\ AssertionError(测试领域)等 作用: 防止异常错误终止程序 """ # 1.1 什么是断言语句 assert...
  • 针对超时异常,查询了python 相关文档,没有并发现完善的包来根据用户自定义的时间来抛出超时异常的模块。所以自己干脆自己来实现一个自定义的超时异常。目前找到了两种方式来实现超时异常的功能(signal.alarm()、...
  • 抛出异常时,看起来好像立即停止了程序执行。抛出异常之后所有代码都不会执行,除非处理了这一异常,程序将会退出并给出错误信息。 def no_return(): print("I am about to raise an exception") raise ...
  • 函数、模块、异常、面向对象、作用域一、Python函数调用函数时可使用正式参数类型lamba匿名函数二、Python模块包三、Python错误与异常assert(断言)try/excepttry/except...else、try-finally抛出异常Python3 ...
  • else 如果一个Try - exception中,没有发生异常,即exception没有执行,那么将会执行else语句内容 反之,如果触发了Try - ...如果try中的异常没有在exception中被指出,那么系统将会抛出Traceback(默认错误代...
  • Python 异常处理

    2016-11-20 19:40:39
    raise的作用:在使用try … except … finally 结构来处理异常的过程中,可以分为两种情况: 不使用raise:程序记录异常,但正常执行下面的语句,直到结束 使用raise:raise语句会抛出错误的实例,同时打断程序的...
  • python异常处理

    2017-06-25 22:34:00
    python异常处理用处是针对抛出的异常进行处理使程序后面代码正常运行(调试代码、或者针对不影响整体运行、不可控的异常出现导致程序运行) 1、语法导致的异常:应该在程序运行前进行处理 2、逻辑上的异常:...
  • python with语句的作用

    2020-06-03 22:10:45
    2、写了关闭指令但是在运行关闭指令前抛出异常 自定义类如果想使用with语句需要实现__enter__,__exit__两个方法如下: def MyClass: def __enter__(self): print('enter is invoked!') return self def ...
  • Python中except用法和作用

    万次阅读 2019-08-29 10:21:39
    Python的except用来捕获所有异常, 因为Python里面每次错误都会抛出 一个异常,所以每个程序错误都被当作一个运行时错误。 以下是使用except一个例子: try: foo = opne(”file”) #open被错写为opne ...
  • traceback模块用于处理异常栈,其作用是捕获并打印信息,它提供了print_...以下代码在try模块中抛出一个名为example自定义,然后使用print_exc()方法(代替print方法)来输出详细信息: import traceback try:...
  • Python中assert的作用

    2018-10-17 01:40:00
    assert这个关键字我们称之为“断言”,当这个关键字后边条件为假时候,程序自动崩溃并抛出AssertionError的异常。 什么情况下我们会需要这样代码呢?当我们在测试程序时候就很好用,因为与其让错误条件...
  • 目录: 异常(基础) 、 迭代器 Iterator 和 生成器 Generator 、 生成器 ...异常的作用: try语句的两种语法: try-except语句的语法: try-finally 语句 raise 语句(类似java throw 向上抛出错误): asse...
  • 5 :异常处理中抛出异常 python的文件操作和异常处理 一:文件的介绍 1 :什么是文件? 如下图展示数据 2 :文件的作用 二:文件的打开与关闭 思考:如果想用word编写一份简历,应该有哪些流程呢? 步骤:新建–写入...
  • 1.当在函数中出现异常时,如果在函数中没有对异常进行处理,则异常会在函数调用处传播,直到传递到全局作用域(主模块),如果还是没有处理,则程序终止 ,报出异常信息。 2.当程序出现异常时,所有异常会被保存在一个...
  • python异常定义与原理

    千次阅读 2017-11-27 09:18:36
    Event Notification:即当我们应用程序在传入数据并进行数据处理过程中,针对不合法事件我们是采取抛出异常而不是返回一个表示不合法数据结果 Special-case handling:在异常处理器处理程序个别极端情况,可以...
  • Python assert 作用

    2019-08-21 13:31:34
    assert这个关键字我们称之为“断言”,当这个关键字后边条件为假时候,程序自动崩溃并抛出AssertionError的异常。 什么情况下我们会需要这样代码呢?当我们在测试程序时候就很好用,因为与其让错误条件...
  • 二:抛出异常 1:异常的本质 2:自定义异常 三:捕获异常 1:作用 2:使用 3:向上抛出异常 四:python中内置异常的使用 五:使用except注意事项  异常 一:为什么会出现异常 1:造成代码冗余 我们下看...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 175
精华内容 70
关键字:

python抛出异常的作用

python 订阅