最近、同僚との間で、try
とcatch
を使用してエラーを通知したり、それらを回避する方法について話し合いました。try-catchはエラーを防止または処理するためのものですか? (JavaScriptで)
これは私の同僚のアプローチです:
import Config from 'config';
export const getUserFromLocalStorage =() => {
const key = Object.keys(localStorage).find(value => value === `${Config.applicationId}/currentUser`);
try {
return key ? JSON.parse(localStorage[key]) : {};
} catch (e) {
return {};
}
};
Wich means, he doesn't care about the given error and he is just carrying of returning an object in order to continue the process
と私は次のようになります。
import Config from 'config';
export const getUserFromLocalStorage =() => {
const key = Object.keys(localStorage).find(value => value === `${Config.applicationId}/currentUser`);
try {
return key ? JSON.parse(localStorage[key]) : {};
} catch (e) {
console.log('the given error', e); // Just simple notifier for this example
}
};
が、私のアプローチは、まだそれがクラッシュすることがundefined
を(返すことで問題があります私のアプリケーションinternaly)、それは簡単にfinally
を使用してそれを修正し、デフォルト値を返すが、それは私には良い練習には聞こえません。
必要であればバランスが自分のアプリケーションを安定させるために、try
catch
とfinally
を何を使ってますQUESTION
。
私たちのアプローチに何か問題はありますか?
特に、localStorage
のデータを信頼できないため、この実装にはどのような方法が最適ですか?
'は、私のアプリをinternalyにクラッシュさせる可能性があります)'を返します:メソッドが 'undefined'を返すかもしれないことを文書化して、それを呼び出すコードがそれを処理できるはずです。同様に、同僚の空のオブジェクトが呼び出しコードの例外を引き起こす可能性があります。主なことは、何がエラー状態で返されたかを記録し、発信者に何をすべきかを決定させることです。 –
いいえ、エラーケースのデフォルトを返すために 'finally'を使用しません。 – Bergi
@Bergi 'finally'のユーティリティとなるもの – JoseAPL