如何在Python中捕获此特定异常 - amazon.api

Uma*_*air 2 python api amazon-web-services

我正在使用的API:https://pypi.python.org/pypi/python-amazon-simple-product-api

我有我的部分代码

from amazon.api import AmazonAPI
products = self.amazon_api.search_n(1, Keywords=item['upc'], SearchIndex='All')
Run Code Online (Sandbox Code Playgroud)

我得到的例外

SearchException: Amazon Search Error: 'AWS.ECommerceService.NoExactMatches', 'We did not find any matches for your request.'
Run Code Online (Sandbox Code Playgroud)

我试着像这样抓住它

try:
    products = self.amazon_api.search_n(1, Keywords=item['upc'], SearchIndex='All')
    found_match = True
except SearchException:
    logging.warning("No search result found on Amazon for UPC: %s"%(item['upc']))
    found_match = False
Run Code Online (Sandbox Code Playgroud)

但是我得到了

NameError: global name 'SearchException' is not defined
Run Code Online (Sandbox Code Playgroud)

然后我在脚本的开头做了这个

from AWS.ECommerceService.NoExactMatches import SearchException
Run Code Online (Sandbox Code Playgroud)

但后来我得到了这个错误

ImportError: No module named AWS.ECommerceService.NoExactMatches
Run Code Online (Sandbox Code Playgroud)

我的问题是我如何默默地捕获这个特定的SearchException例外?

Fej*_*ejs 5

试试这个:

from amazon.api import AmazonAPI, SearchException
Run Code Online (Sandbox Code Playgroud)

之后,

try:
    products = self.amazon_api.search_n(1, Keywords=item['upc'], SearchIndex='All')
    found_match = True
except SearchException:
    logging.warning("No search result found on Amazon for UPC: %s"%(item['upc']))
    found_match = False
Run Code Online (Sandbox Code Playgroud)

应该按预期工作.

可以在这里找到文档.