最近我和同事討論過,關於使用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
(這可能會崩潰內置我的應用程序),可以使用finally
輕鬆修復它並返回一個默認值,但對我來說聽起來不太好。
問題
那麼將使用try
catch
和finally
如果需要的話,使我的應用程序穩定的平衡。
我們的方法有什麼問題嗎?
特別是,我們不能信任來自localStorage
的數據,那麼這個實現的最佳方法是什麼?
'是它會返回未定義的(可能會導致內部應用程序崩潰)':您應該記錄該方法可能會返回'undefined',並且您的代碼調用它應該能夠處理該問題。同樣,你的同事的空對象可能會導致調用代碼的異常。主要是記錄在錯誤狀態下返回的內容,並讓呼叫者決定要做什麼。 –
不,您不會使用'finally'來爲錯誤情況返回默認值。 – Bergi
@Bergi'finally'的效用是什麼 – JoseAPL