2015-09-30 58 views
1

我得到以下错误:if语句检查错误类型

{ [TokenExpiredError: jwt expired] 
    name: 'TokenExpiredError', 
    message: 'jwt expired', 
    expiredAt: Wed Sep 30 2015 16:44:44 GMT+0200 (CEST) } 

我试过以下,没有它的工作:

try { 
     // ...code 
    } catch (err) { 
     if (typeof err === 'TokenExpiredError') { 
      // ...do stuff 
     } 

    } 

我想检查的对象类型。我知道我可以检查消息,但我想了解如何检查错误对象上的对象类型。

+1

'typeof'只返回非常基本的类型:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof – biziclop

+0

@biziclop我想我必须使用instanceof呢? –

+2

'typeof err'返回''object''。你想'instanceof' - 或者只是检查'err.name'。 – Bergi

回答

1

其实对象类型是err.name的值,应该检查。

但是,如果你想使用instanceof

try { 
    // ...code 
} catch (err) { 
    if (err instanceof TokenExpiredError) { 
     // ...do stuff 
    } 
} 

即假设TokenExpiredError之前定义(一个构造函数)。例如,使用Error

注意:请勿使用引号,因为您传递了该函数的引用。

+0

我知道如何做到这一点,我想检查实际的对象类型。不针对对象属性名称。 –

+0

什么对象?这个? – Supersharp

+0

对象 - > err –