2017-04-22 71 views
0

我正在使用中的Base64模块的b64decode()函数,文字的但是某些字符串抛出这个错误:的Python:如何抓住这个错误(不能源错误名称) - binascii.Error

'binascii.Error: Incorrect Padding'. 

我知道这是因为字符串的长度不是4的倍数,这是base64编码文本的要求。

而不是只是在字符串的末尾添加'='来使它成为4的倍数,我想捕获错误并简单地声明该字符串不是base64编码的。它使用通用的'except:',但是我想要捕获具体的错误,但是我找不到相同的错误,因为它不像其他错误那样具体,'除了binascii.Error: '显然是不确定的。帮帮我?

+0

它的'binascii'模块。 – tdelaney

+0

是的,但这不是一个.py文件,它是一个编译的C模块,所以我不能在它里面修补 –

+0

您可以执行'import binascii',然后用'除了binascii.Error作为e:'来捕获它。 – tdelaney

回答

0

异常类型存储在binascii.Error,还有捕捉异常的多种方式:

# 1. you can import the binascii module 
import binascii 
try: 
    pass 
except binascii.Error as err: 
    pass 


# 2. or you can use the binascii from base64's namespace 

try: 
    pass 
except base64.binascii.Error as err: 
    pass 


# 3. or you can use __import__ to do a temp import 

try: 
    pass 
except __import__('binascii').Error as err: 
    pass 
1

原因

except binascii.Error 

没有工作是因为binascii从以base64命名空间内进口的,所以这是我的工作命名空间未定义。捕获错误的正确方法是

except base64.binascii.Error 

电枢错误

相关问题