Python:如何捕获此错误(无法获取错误名称) - binascii.Error

Jck*_*law 5 python base64 exception binascii

我正在使用base64模块用于b64decode()函数,但是某些文本字符串会抛出此错误:

'binascii.Error: Incorrect Padding'.
Run Code Online (Sandbox Code Playgroud)

我理解这是因为字符串不是4的长度倍数,这是base64编码文本的要求.

而不是仅仅将'='添加到字符串的末尾以使其成为4的倍数,我想捕获错误并简单地声明该字符串不是base64编码的.它使用一般的'except:',但是我想捕获特定的错误,但我找不到相同的错误,因为它不像其他错误那样具体,并且'除了binascii.Error: '显然是不确定的.救命?

abc*_*ccd 10

存储异常类型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
Run Code Online (Sandbox Code Playgroud)


Jck*_*law 6

原因

except binascii.Error
Run Code Online (Sandbox Code Playgroud)

不起作用是因为 binascii 是从 base64 命名空间中导入的,所以它在我的工作命名空间中未定义。捕获错误的正确方法是

except base64.binascii.Error
Run Code Online (Sandbox Code Playgroud)

电枢错误