在學習拋出異常的過程中,關於錯誤信息 TypeError: exceptions must derive from BaseException 的原因


雖然是個很low的問題,但是自己還是出現了,所以特地記錄下來,保證自己不會再犯。首先看看我的代碼

def FooError(ValueError):
  pass
def foo(s):
  n=int(s)
if n==0:
  raise FooError('無效的值:%s'%s)
return 10/n
print(foo('0'))

運行結果為:

Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\py\廖雪峰\錯誤處理\拋出異常.py", line 8, in <module>
print(foo('0'))
File "C:\Users\Administrator\Desktop\py\廖雪峰\錯誤處理\拋出異常.py", line 6, in foo
raise FooError('無效的值:s')
TypeError: exceptions must derive from BaseException

異常必須從基礎異常類中派生。然后看了下自己的第一行。用的是def,這是創建了一個方法。。而不是一個類,簡單的語法錯誤。只要將第一行的def改成class

 

class FooError(ValueError):
  pass
def foo(s):
  n=int(s)
if n==0:
  raise FooError('無效的值:%s'%s)
return 10/n
print(foo('0'))

 

再來看下運行結果:

Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\py\廖雪峰\錯誤處理\拋出異常.py", line 8, in <module>
print(foo('0'))
File "C:\Users\Administrator\Desktop\py\廖雪峰\錯誤處理\拋出異常.py", line 6, in foo
raise FooError('無效的值:%s'%s)
__main__.FooError: 無效的值:0

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM