Обработка COMError в Python? - PullRequest
0 голосов
/ 09 мая 2018

Запустив свой скрипт, я получаю следующую ошибку для некоторых файлов:

COMError: (-2146822496, None, ('The file appears to be corrupted.', 
'Microsoft Word', 'wdmain11.chm', 25272, None))

Я импортировал comtypes , и я хочу сделать исключение при возникновении этой ошибки, поэтому я делаю следующее:

try:
    code...
except comtypes.COMError:
    pass

Но похоже, что Python не распознает исключение, так как он выдает тот же COMError, что и раньше.

Любые предложения о том, как решить эту проблему? Спасибо.

1 Ответ

0 голосов
/ 14 октября 2018

Вам, вероятно, нужно показать еще немного своего кода, чтобы кто-нибудь мог вам помочь. Я столкнулся с подобной проблемой, но мое приложение немного отличается. Я сделаю все возможное, чтобы помочь.

Вам необходимо обработать возникшую ошибку. Поэтому, когда вы получаете исключение, вам нужно сделать что-то вроде этого:

при условии, что это ваша ошибка:

COMError: (-2146822496, Нет, («Файл, похоже, поврежден.», «Microsoft Word», «wdmain11.chm», 25272, Нет))

except comtypes.COMError as ce:
# get the error information
target_error = ce.args # error in a tuple form
# target_error[0] -> -2146822496
# target_error[1] -> None
# target_error[2] -> 'The file appears to be corrupted.',  'Microsoft Word', 'wdmain11.chm', 25272, None
# target_error[2] is another tuple made up of
# [2][0] -> 'The file appears to be corrupted.'
# [2][1] -> 'Microsoft Word'
# [2][2] -> 'wdmain11.chm'
# [2][3] -> 25272
# [2][4] -> None

if target_error[2][0] == 'The file appears to be corrupted.':
    print("# handle your error here inside this if statement")

Суть в том, что, как только вы получите реальную ошибку, вы можете сделать что-то, чтобы соответственно обработать ее. Опять же, не видя ваш код, трудно дать больше советов, но вы можете обработать ошибку на основе типа приложения («Microsoft Word») или кода ошибки («Файл поврежден»).

...