精华内容
下载资源
问答
  • python raise

    千次阅读 2013-10-23 11:21:00
    原地址:http://openhome.cc/Gossip/Python/TryRaise.html except後若不接上任何例外型態,則表示捕捉所有例外,這包括了所有的系統例外,有時這並不是你想要的行為。例如,下面這個程式,無法透過...


    原地址:http://openhome.cc/Gossip/Python/TryRaise.html


    except後若不接上任何例外型態,則表示捕捉所有例外,這包括了所有的系統例外,有時這並不是你想要的行為。例如,下面這個程式,無法透過KeyboardInterrupt來中斷迴圈:

    while True:
        try:
            print('Run it....')
        except:
             print('exception happened...')

    由於except捕捉所有的例外,所以上例無法離開迴圈。你可以改為以下的方式:
    while True:
        try:
            print('Run it....')
        except Exception:
             print('exception happened...')

    在Python 3中,Exception是BaseException的子類別,可以捕捉除了系統例外以外的所有例外。上例可以藉由 KeyboardInterrupt中斷迴圈。

    在Python 3中,可以在except捕捉到例外後,將例外物件指定給變數。例如:

    >>> try:
    ...     raise IndexError('11')
    ... except IndexError as e:
    ...     print(type(e), str(e))
    ...
    <class 'IndexError'> 11
    >>>


    在更進階的例外追蹤需求中,可以使用sys.exc_info()方法取得一個Tuple物件,該Tuple物件中包括了例外的類型、例外訊息以及traceback物件:
    >>> try:
    ...     raise 'error'
    ... except:
    ...     a, b, c = sys.exc_info()
    ...     print(a)
    ...     print(b)
    ...     print(c)
    ...
    <class 'TypeError'>
    exceptions must derive from BaseException
    <traceback object at 0x01D4FB20>
    >>>


    trackback物件代表了呼叫堆疊中每一個層次的追蹤,可以使用tb_next取得更深一層的呼叫堆疊。例如:
    import sys
    def test():
        raise EOFError
    
    try:
        test()
    except:
        type, message, traceback = sys.exc_info()
        while traceback:
            print('..........')
            print(type)
            print(message)
            print('function or module?', traceback.tb_frame.f_code.co_name)
            print('file?', traceback.tb_frame.f_code.co_filename)
            traceback = traceback.tb_next
    

    tb_frame代表了
    該層追蹤 的所有物件資訊,f_code可以取得該層的程式碼資訊,例如co_name可取得函式或模組名稱,而co_filename則表示該程式碼所在的檔案。上例的執行範例如下:
    ..........
    <class 'EOFError'>

    function or module? <module>
    file? demo.py
    ..........
    <class 'EOFError'>

    function or module? test
    file? demo.py

    再來看看raise的使用,正如在  try 陳述句 中看到的,你可以在raise後接上字串或例外類別名稱,現在已不鼓勵raise字串實例。實際上,raise之後可以接上例外類別名稱、例外實例或不接上任何東西。

    當你在raise後接上例外類別時,實際上會以該類別建立實例再丟出,也就是下面兩行程式碼的作用是相同的:
    raise EOFError
    raise EOFError()

    如果在except中使用raise而不接上任何物件,則表示將except比對到的例外實例再度丟出。例如:
    >>> try:
    ...     raise EOFError
    ... except EOFError:
    ...     print('got it')
    ...     raise
    ...
    got it
    Traceback (most recent call last):
      File "<stdin>", line 2, in <module>
    EOFError
    >>>

    如果必要的話,你還可以在except中raise例外時,附上except所比對到的例外實例。例如。
    >>> try:
    ...     raise EOFError
    ... except EOFError as e:
    ...     print('got it')
    ...     raise IndexError from e
    ...
    got it
    Traceback (most recent call last):
      File "<stdin>", line 2, in <module>
    EOFError

    The above exception was the direct cause of the following exception:

    Traceback (most recent call last):
      File "<stdin>", line 5, in <module>
    IndexError
    >>>


    raise from語法,會將from後接上的例外實例,設定給被raise的例外實例之__cause__。例如:
    >>> try:
    ...     try:
    ...         raise EOFError('XD')
    ...     except EOFError as e:
    ...         print(e.args)
    ...         raise IndexError('Orz') from e
    ... except IndexError as e:
    ...     print(e.args)
    ...     print(e.__cause__.args)
    ...
    ('XD',)
    ('Orz',)
    ('XD',)
    >>>


    實際上,如果你在except中raise某個例外,則原except所比對到的例外,無論有無使用raise from,都會自動設定給__context__。例如:
    >>> try:
    ...     try:
    ...         raise EOFError('XD')
    ...     except EOFError as e:
    ...         print(e.args)
    ...         raise IndexError('Orz') from e
    ... except IndexError as e:
    ...     print(e.args)
    ...     print(e.__cause__.args)
    ...     print(e.__context__.args)
    ...

    ('XD',)
    ('Orz',)
    ('XD',)
    ('XD',)
    >>>
    展开全文
  • python raise的基本使用

    2020-09-16 07:57:47
    主要介绍了python raise的基本使用,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
  • python raise异常处理.pdf

    2021-09-13 15:29:03
    python raise异常处理.pdf
  • python raise 异常

    千次阅读 2018-11-09 16:41:28
    raise() 用raise语句来引发一个异常。...Python用异常对象(exception object)表示异常情况,遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行。  ...

    raise()

    用raise语句来引发一个异常。异常/错误对象必须有一个名字,且它们应是Error或Exception类的子类。

    抛出异常和自定义异常

    Python用异常对象(exception object)表示异常情况,遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行。

                                                            

    展开全文
  • python raise的用法

    2020-02-14 13:41:23
    有关于pythonraise显示引发异常的方法: 当程序出错时,python会自动触发异常,也可以通过raise显示引发异常 一旦执行了raise语句,raise之后的语句不再执行 如果加入了try,except,那么except里的语句会被执行 try...

    有关于python里raise显示引发异常的方法:

    • 当程序出错时,python会自动触发异常,也可以通过raise显示引发异常
    • 一旦执行了raise语句,raise之后的语句不再执行
    • 如果加入了try,except,那么except里的语句会被执行
    try:
        s = None
        if s is None:
            print(' s 为空')
            raise NameError
        print(len(s))
    
    except Exception:
        print('没有长度')

     

    展开全文
  • python raise NotImplementedError

    千次阅读 2018-08-30 10:07:51
    NotImplementedError表示未实行的方法 因为注释: Method or function hasn't been implemented yet. class father(): def __init__(self): self._name = "aaa"... raise NotImpleme...

    NotImplementedError表示未实行的方法

    因为注释: Method or function hasn't been implemented yet.

    class father():
        def __init__(self):
            self._name = "aaa"
    
        def getname(self):
            raise NotImplementedError
    
    class son(father):
        def __init__(self):
            father.__init__(self)
    
    
    
    if __name__ == "__main__":
        son = son()
        son.getname()

    输出:

    Traceback (most recent call last):
      File "F:/Pycharm_Projection/Test/test.py", line 26, in <module>
        son.getname()
      File "F:/Pycharm_Projection/Test/test.py", line 11, in getname
        raise NotImplementedError
    NotImplementedError

    在子类里实现对应方法:

    class father():
        def __init__(self):
            self._name = "aaa"
    
        def getname(self):
            raise NotImplementedError
    
    class son(father):
        def __init__(self):
            father.__init__(self)
    
        def getname(self):
            print("aaaa")
            return self._name
    
    
    if __name__ == "__main__":
        son = son()
        son.getname()

    输出:

    aaaa

     

    展开全文
  • 1.Python 抛出异常def test(symbol): if symbol == 1: raise Exception('can not be 1') try: test(1) except Exception as err: print(str(err)) 2.Python AsserttestP = 3 assert testP >= 4, '
  • python raise 触发异常

    千次阅读 2018-01-10 15:53:38
    import pandas as pd import webbrowser def mye(level): ... raise Exception("Invalid level!",level) #强制触发异常,并传入两个参数 # 触发异常后,后面的代码就不会再执行 if __name__ == "__main__": # pri
  • python raise和assert的区别

    千次阅读 2017-10-26 22:15:00
    python可以自动触发异常,raise(内置函数)的定义为显示的抛出异常,用户可以使用raise进行判断,显式的引发异常,raise执行后程序将不再向下执行。 式例: #!/usr/bin/env python # -*- coding:utf-8 -*- __...
  • Python raise 抛出异常的说明

    千次阅读 2013-03-29 19:38:14
    python中可以用rasie决定异常了该做什么, 例如: try: for i in range(3): for j in range(3): if i == 2: raise print i,j except: print "Stoped dew to i reaches 3
  • 除此之外,Python 也允许程序自行引发异常,自行引发异常使用 raise 语句来完成。 异常是一种很“主观”的说法,以下雨为例,假设大家约好明天去爬山郊游,如果第二天下雨了,这种情况会打破既定计划,就属于一种...
  • Pythonraiseraise/from 的区别

    千次阅读 2018-11-21 11:50:15
    Pythonraiseraise/from 的使用方法 文章目录Pythonraiseraise/from 的使用方法0. 参考资料1. 代码比较2. 用法解释2.1 raise2.2 raise A from B3. 总结 0. 参考资料 Pythonraise from” ...
  • Pythonraise

    2019-07-04 21:11:23
    Pythonraise 异常触发 在Python中通常使用raise语句来触发异常; raise语法格式如下: 语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,args 是自已提供的异常参数。 最后一个参数是...
  • pythonraise使用心得

    千次阅读 2019-06-25 20:37:13
    当程序出现错误,python会自动引发异常,也可以通过raise显示地引发异常。一旦执行了raise语句,raise后面的语句将不能执行。
  • Python ——raise

    千次阅读 2017-06-05 01:59:53
    待。
  • 在本篇文章里小编给大家分享的是一篇关于Python新手学习raise用法的相关知识点,需要的朋友们可以参考下。
  • python3 raise 抛出异常.pdf
  • pythonraise手动抛出异常

    千次阅读 2019-04-18 15:55:55
    pythonraise手动抛出异常文章目录: raise: 就是手动抛出异常 格式: 格式:raise [exceptionType[,argument][,traceback]] 举例子1: def functionName( level ): if level < 1: raise Exception(...
  • pythonraise的用法

    2018-07-16 12:17:00
    有关于pythonraise显示引发异常的方法: 当程序出错时,python会自动触发异常,也可以通过raise显示引发异常 一旦执行了raise语句,raise之后的语句不在执行 如果加入了try,except,那么except里的语句会被执行 ...
  • class TestClassOne(object): def Test(self): raise NotImplementedError class TestClassTwo(TestClassOne): def Test2(self): print 'hello world' a = TestClassTwo() a.Test()

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 135,616
精华内容 54,246
关键字:

pythonraise

python 订阅