我在處理函式被呼叫時給出的引數數量不正確的例外時遇到了麻煩。
這里有一個簡化的例子:
def func(arg1, arg2)。
return arg1 arg2
func(46)
當函式被呼叫而沒有正確的引數數時,會產生以下錯誤資訊:
當函式被呼叫而沒有正確的引數數時,會產生以下錯誤資訊。
TypeError: func() missing 1 required positional argument: 'arg2'。
我試著添加一個嘗試,除了處理這個例外,如下所示,但它不起作用:
我試著添加一個嘗試。
def func(arg1, arg2)。
try:
return arg1 arg2
except:
return 'Incorrect input'。
該函式仍然生成了錯誤資訊,而不是 "輸入不正確 "的陳述句。
當函式被呼叫時給出了錯誤的引數數,我怎樣才能讓函式回傳'輸入不正確'的資訊呢?
謝謝
uj5u.com熱心網友回復:
例外發生在函式呼叫時,在進入func之前,所以你沒有設法抓到它:
def func(arg1, arg2)。
return arg1 arg2
try:
func(46)
except TypeError:
print('Incorrect input')
注意你收到的錯誤資訊說明它是'TypeError',所以你應該只捕捉這種錯誤。
uj5u.com熱心網友回復:
你可以創建你自己的try-except,如下:
class IncorrectInput(Exception)。
def __init__(self, msg):
self.msg = msg
def __str__(self):
return repr(self.msg)
def func(arg1, arg2 = 0) 。
try:
if type(arg1)! = int or type(arg2)! = int:
raise IncorrectInput("Incorrect input")
return arg1 arg2
except IncorrectInput as e:
print(e)
func('a'/span>, 'b'/span>)
輸出:
'Incorrect input'。
如果你能用if-else代替try-except.你可以這樣嘗試:
def func(arg1, arg2 = 0)。
if isinstance(arg1, int) and isinstance(arg1, int)。
return arg1 arg2
else:
return 'Incorrect input'.
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/320021.html
標籤:
