Вы получаете ошибку, потому что ваша функция GetRequest()
вызывает строку как исключение:
if nodes[0].text != "OK":
raise 'Error making API call.'
Если это не то, что вы хотите, у вас есть два варианта:
- Вы можете иметь функцию
return
строку или None
, или
- Вы можете передать сообщение об ошибке реальному подклассу
Exception
(как предложено knutin )
В любом случае, если вы присваиваете это возвращаемое значение переменной, вы можете обработать его соответствующим образом. Вот пример:
Вариант 1
Предположим, вы решили получить GetRequest()
return None
:
def URLGetText(self, url, textParams=None):
self.CheckURL(url)
if textParams == None:
textParams = AlchemyAPI_TextParams()
textParams.setUrl(url)
# Capture the value of GetRequest() before returning it
retval = self.GetRequest("URLGetText", "url", textParams)
if retval is None:
print 'Error making API call.' # print the error but still return
return retval
def GetRequest(self, apiCall, apiPrefix, paramObject):
# ...
if nodes[0].text != "OK":
return None
return result
Эта опция немного двусмысленна. Откуда вы знаете, что это действительно ошибка или возвращаемое значение действительно было None
?
Вариант 2
Это, вероятно, лучший способ сделать это:
Сначала создайте подкласс Exception
:
class GetRequestError(Exception):
"""Error returned from GetRequest()"""
pass
Затем поднимите его в GetRequest () `:
def URLGetText(self, url, textParams=None):
self.CheckURL(url)
if textParams == None:
textParams = AlchemyAPI_TextParams()
textParams.setUrl(url)
# Attempt to get a legit return value & handle errors
try:
retval = self.GetRequest(apiCall, apiPrefix, paramObject)
except GetRequestError as err:
print err # prints 'Error making API call.'
# handle the error here
retval = None
return retval
def GetRequest(self, apiCall, apiPrefix, paramObject):
# ...
if nodes[0].text != "OK":
raise GetRequestError('Error making API call.')
return result
Таким образом, вы вызываете допустимую ошибку, когда GetRequest () не возвращает желаемый результат, а затем вы можете обработать ошибку, используя блок try..except
, и при желании вывести ошибку, остановить программу или сохранить собирается (это то, что я думаю, что вы хотите сделать на основе вашего вопроса).