2017-04-22 69 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 

電樞錯誤

相關問題