2015-09-30 78 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 –