我循环浏览一个货币列表,以便从API下载价格系列,但碰巧其中一些货币不受支持,因此它引发了模块定义的异常类:
ExchangeError: This currency pair is not supported
.
当它发生时,我想继续循环到下一种货币,但由于某种原因,我无法处理模块异常。
下面是一个很好地处理内置异常的示例:
f = [1,2,3,4,'A',5]
def foo(nb):
return nb /2
for i in f :
try:
print(foo(i))
except TypeError :
continue
如预期,它返回:
0.5
1
1.5
2
2.5
但一旦它是一个模块(或用户定义的)异常,它就会抛出一个错误,说明该异常未定义:
@retry(wait_exponential_multiplier=1000, wait_exponential_max=10000)
def apiFetchOHLC(obj, currency, timeframe, option):
ohlcv = obj().fetch_ohlcv(currency, timeframe, since = option)
return ohlc
for c in currencies_list :
...
try :
# Download data
ohlc = apiFetchOHLC(obj, c, tf, maxCandlesLimit)
# except : # works fine
except ExchangeError : # doesn't work
print("Oops! That was no valid currency. Continue...")
continue
这是我运行循环时得到的错误:
except ExchangeError:
NameError: name 'ExchangeError' is not defined
要使其正常工作,我需要删除异常类型
ExchangeError
但对我来说,这不是一个解决方法,因为它将继续循环,不管异常是什么,有时我需要重试下载。
我怎样才能做到
try
和
except
或者用
retrying
包裹?(
link
)