Ошибка обработки Python 3 TypeError: перехват классов, которые не наследуются от BaseException, не допускается - PullRequest
0 голосов
/ 05 ноября 2018

Когда я запускаю этот код:

i=0
while i<5:
    i=i+1;
    try:
        SellSta=client.get_order(symbol=Symb,orderId=SellOrderNum,recvWindow=Delay)
    except client.get_order as e:
        print ("This is an error message!{}".format(i))
#End while

Я получил эту ошибку: Ошибка типа: перехват классов, которые не наследуются от BaseException, не допускается

Я прочитал этот шаг Иногда отображается предупреждение Exception TypeError, иногда не при использовании метода throw генератора , а этот Не может перехватить ложное исключение, поскольку оно также не наследует BaseException Прочитайте это https://medium.com/python-pandemonium/a-very-picky-except-in-python-d9b994bdf7f0

Я исправляю это с помощью этого кода:

i=0
while i<5:
    i=i+1;
    try:
        SellSta=client.get_order(symbol=Symb,orderId=SellOrderNum,recvWindow=Delay)
    except:
        print ("This is an error message!{}".format(i))
#End while

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

Большое спасибо !!

1 Ответ

0 голосов
/ 28 ноября 2018

Я выкладываю вопрос в испанском стеке с лучшими результатами. Чтобы перевести и подвести итог: Ошибка возникает потому, что в предложении об исключении вы должны указать, какое исключение вы захватили. Исключением является класс, который наследует (прямо или косвенно) от базового класса Exception.

Вместо этого я поместил client.get_order там, где python ожидал имя исключения, а вы указали метод объекта, а не класс, который наследуется от Exception.

Решение идет по этому пути

try:
    SellSta=client.get_order(symbol=Symb,orderId=SellOrderNum,recvWindow=Delay)
except Exception as e:
    if e.code==-2013:
        print ("Order does not exist.");
    elif e.code==-2014:
        print ("API-key format invalid.");
    #End If

Вам нужно будет кодировать каждое исключение в здесь

...