2016-08-15 5 views
1

タイプカバレッジを有効にすると、try-catchのcatch部分のエラーがであるという警告が表示されます。フローでカバーされません。try-catchエラー「フローでカバーされていません」

try { 
// do something that fails and throws an Error 
} catch(err) { 
    console.error('Error: ', err.message, err.stack) 
} 

だから私の質問があり、それはそれをチェック入力することが可能である:私はcatch(err: Error)を入れしようとした場合、私は予期しないトークンを取得しますか?もしそうなら、最良の解決策は何ですか?

私はFlowType 0.30.0を使用しています。

+0

あなたの例では単にタイプミスかもしれませんが、あなたは 'err'と' e'を使用しています。 –

+0

いいえ、 'catch(err:Error)'を設定してもまだエラーが表示されますが、まだ** Flow **でカバーされていません。 _は、typo_を修正しました – aparedes

+0

ええ、よく問題は、フローによってカバーされていない、それはかなり大きな事業かもしれないということです:あなたが呼び出すすべての関数は、エラーをスローし、 'キャッチ'にバブル可能性がありますあなたがキャッチしたエラーが実際にエラーオブジェクトであれば...: - / –

答えて

1

Nuclideを使用しており、タイプカバレッジ機能が有効になっていると思います。ステータスバーのパーセンテージをクリックして有効/無効にすることができます。

「発見された」メッセージは、厳密にはフローエラーではありません。フローは何かのタイプを知らないということだけを伝えます。この場合は正しいです。例外の種類が何であるかを静的に知る方法はありません。 JSではあらゆる型を投げることができるので、実際にエラーインスタンスであることを実際には知ることはできません。

ただし、この場合も良性のメッセージです。個人的には、100%のカバレッジは必ずしも良い目標だとは思わない。このようなコードを発見することが理にかなっている場合があります。

関連する問題