Python 3处理错误TypeError:不允许捕获不继承自BaseException的类

时间:2018-11-05 03:55:47

标签: python exception typeerror binance

当我运行此代码时:

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

我收到此错误: TypeError:不允许捕获不继承自BaseException的类

我读过这个脚步Exception TypeError warning sometimes shown, sometimes not when using throw method of generator,而这个Can't catch mocked exception because it doesn't inherit 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

其结果是忽略该错误并转到下一个时间,但我希望ot捕获该错误并打印出来。

非常感谢!

1 个答案:

答案 0 :(得分:1)

我在西班牙语堆栈中发布了question,效果更好。 翻译和总结: 发生错误的原因是,您必须在exception子句中指出要捕获的异常。异常是从基类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

您需要为here

中的每个异常编写代码