Обрабатывание определенных для Windows исключений платформенно независимым способом

2 ответа

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

        try:
            f.extractall()
        except OSError, e:
            # http://bugs.python.org/issue6609
            if sys.platform.startswith('win'):
                if isinstance(e, WindowsError) and e.winerror == 267:
                    raise InvalidFile, ('uses Windows special name (%s)' % e)
            raise
5
ответ дан 5 December 2019 в 08:54
поделиться

Если вам нужно перехватить исключение с именем, которое может не всегда существовать, создайте его:

if not getattr(__builtins__, "WindowsError", None):
    class WindowsError(OSError): pass

try:
    do()
except WindowsError, e:
    print "error"

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

13
ответ дан 5 December 2019 в 08:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: