雖然是個很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