如何測試我的參數,它是否會提高沒有實際提高它,使用try
和except
例外嗎?無效參數引發異常
class MyClass:
def function(parameter):
pass
parameter
是一個模糊的功能,其可以提高1個或多個的任何異常,例如:
parameter = pow("5", 5)
甲TypeError
作爲所述函數被調用,一旦上升,之前該函數可以執行其聲明。
如何測試我的參數,它是否會提高沒有實際提高它,使用try
和except
例外嗎?無效參數引發異常
class MyClass:
def function(parameter):
pass
parameter
是一個模糊的功能,其可以提高1個或多個的任何異常,例如:
parameter = pow("5", 5)
甲TypeError
作爲所述函數被調用,一旦上升,之前該函數可以執行其聲明。
在另一個答案你說的註釋:「parameter
是另一個功能;舉個例子:parameter = pow("5", 5)
這引起了一個TypeError
,但它可以是任何類型的功能,任何類型的異常「。
如果你想趕上你的函數裏面的exeption你要調用的paramenter(這我假設是可調用),該函數內部:
def function(callable, args=()):
try:
callable(*args)
except:
print('Ops!')
例子:
這是如果你真的需要在函數內調用你的「參數」。否則,你應該之外管理其行爲,可能與類似:
>>> try:
... param = pow('5', 5)
... except:
... param = 10
...
>>> param
10
>>> function(param)
在這個例子中,引發異常是pow
不function
,所以這是分開兩個不同的呼叫一個很好的做法,並與包try-except
聲明可能失敗的代碼。
如果'parameter'只是一個沒有任何參數的函數呢? – 2012-01-26 23:57:07
@ChristopherM:如果'parameter'是一個不需要任何參數的函數,那麼只需調用'function(parameter)',因爲默認'args =()'。 – 2012-01-27 00:03:58
好的,謝謝,我現在明白了。 – 2012-01-27 00:11:24
如果您預計參數爲某種類型,可以使用type(paramter) is parametertype
。
例如,如果你想覈實「我」是一個int,運行指令if(type(i) is int):
通過編輯:
try:
pow("5",5)
return 0
except Exception, err:
sys.stderr.write('ERROR: %s\n' % str(err))
return 1
從我能理解,你要處理拋出的異常還要檢查進一步檢查出現了哪些錯誤?這是做到這一點的一種方式。現在
class Foo(object):
def find_errors(arg):
errors = []
try:
# do something
except TypeError as e:
errors.append(e)
# handle exception somehow
except ValueError as e:
errors.append(e)
# handle exception somehow
# and so on ...
finally:
pass #something here
return errors, ans
您可以檢查errors
並找出異常已經提出。
也許你的意思是如何捕捉造成無效的函數調用TypeError
異常?
像這樣:
def foo(bar):
pass
foo(1, 2)
你不抓住他們的功能,肯定不會在def foo(bar):
線。
就這麼所以這是犯了一個錯誤的函數的呼叫者,你捕捉到了異常:
try:
foo(1, 2)
except TypeError:
print('call failed')
爲什麼你不想嘗試...除了?只是爲了好奇還是有其他原因嗎? – 2012-01-26 23:00:49
對不起,如果我不清楚,我想使用'try'和'except',但我不知道它在參數中如何工作。 – 2012-01-26 23:02:48
你的參數將會提升取決於你的功能是如何實現的。在你的例子中,我沒有看到'parameter'如何在'function'中引發一個異常。 – 2012-01-26 23:06:51