我现在有下面的函数,其中有一个if-else
语句。在阅读了this post之后,我认为使用try-catch
异常处理可能更好。然而,我不知道如何做到这一点。基本上,如果输入的currency
不是AUD
,我想用下面的print
语句抛出一个异常。你知道吗
def update(self, currency):
if self.currency == 'AUD':
url = 'http://www.rba.gov.au/statistics/tables/csv/f17-yields.csv'
response = urllib2.urlopen(url)
text = response.read()
csvfile = StringIO.StringIO(text)
df = pd.read_csv(csvfile)
print df
else:
print('This currency is not available in Database')
使用异常处理而不是
if-else
语句会慢得多。你知道吗我已经在字典here中定位了一个键列表,并附上了计时。对我来说,慢了5倍。你知道吗
如果要强制异常处理,可以使用断言:
在这种情况下并不一定理想(在我看来,这是一个LBYL场景),因为平等测试应该更快、更可读,并且可以更好地扩展到更多的货币,假设您从各种不同的货币开始。你知道吗
你通常不想在同一个地方提出和抓住一个例外。相反,您希望在第一次注意到错误的地方引发异常,并在报告问题有意义的地方捕获它。你知道吗
在您展示的代码中,您只想用
raise
语句替换print
调用,可能是ValueError
。将要打印的文本作为参数传递给异常:因为您还没有显示
update
在哪里被调用,所以我不确定在哪里捕获异常是合适的。异常有用(而不是if
/else
测试)的一个原因是,如果在某个级别没有有用的方法来处理异常,那么可以让异常从多个函数或结构块中冒泡出来。你知道吗相关问题 更多 >
编程相关推荐