2017-06-29 75 views
1

我在使用boto3Amazon SNS时遇到以下错误。我只想捕获InvalidParameterException,我该怎么做?Python:捕获第三方库异常

Traceback (most recent call last): 
    File "D:\Logger\Notification.py", line 279, in <module> 
    Push.subscribe(token1, 'android') 
    File "D:\Logger\Notification.py", line 119, in subscribe 
    'Enabled': b'True' 
    File "C:\Python27\lib\site-packages\botocore\client.py", line 310, in _api_call 
    return self._make_api_call(operation_name, kwargs) 
    File "C:\Python27\lib\site-packages\botocore\client.py", line 599, in _make_api_call 
    raise error_class(parsed_response, operation_name) 
botocore.errorfactory.InvalidParameterException: An error occurred (InvalidParameter) when calling the CreatePlatformEndpoint operation: Invalid parameter: Token Reason: Endpoint arn:aws:sns:us-west-2:252285631092:endpoint/GCM/Test/06c4448e-545b-312a-978f-98af5d5829e4 already exists with the same Token, but different attributes. 

如果我试图抓住InvalidParameterException,它显示

NameError: global name 'InvalidParameterException' is not defined 

我有进口botocore。现在,如果我试图赶上botorcore.errorfactory.InvalidParameterException它显示。

AttributeError: 'module' object has no attribute 'InvalidParameterException' 

回答

1

botocore库从基类生成一些异常。如果你想忽略一个特定的错误类型

from botocore.exceptions import ClientError 

try:  
    ... 
except ClientError as e: 
    ... 

检查ClientError().response['Error']['Code']改变你如何处理异常,只是raise再次:抓住基类。请参阅Error Handling documentation