我在創建一種管理JS中cookie的方法時遇到了這個問題。我的Cookie可以包含在JSON格式字符串:處理異常從不可解析的輸入到JSON.parse()
var cookieContents = '{"type":"cookie","isLie":true}';
...或只是簡單的字符串:
var cookieContents = 'The cookie is a lie';
爲了解析餅乾,我會做最好JSON.parse(cookieContents)
。與此問題是JSON.parse()
無法解析一個純字符串並引發致命錯誤。
我的問題是什麼是最好的/最廣泛接受的方式來處理這樣的情況?
我已經使用try/catch語句嘗試:
var cookie1 = '{"type":"cookie","isLie":true}';
var cookie2 = 'The cookie is a lie';
function parseCookieString(str){
var output;
try{
output = JSON.parse(str);
} catch(e){
output = str;
}
console.log(output);
}
parseCookieString(cookie1); // outputs object
parseCookieString(cookie2); // outputs string
http://jsfiddle.net/fmpeyton/7w60cesp/
這工作完全正常,但感覺很髒。也許是因爲我通常不處理JS致命錯誤。 在這樣的場景中處理致命錯誤是否很常見?
這其實是在'JSON.parse設計錯誤()'(哦,一個設計錯誤在JavaScript這樣!罕見!ohwait ...) - >這不應該是一個致命的錯誤,它應該返回null或什麼。或者它應該有一個只檢查有效性的方法(如'JSON.isValid()',這可能是最乾淨的解決方案。) – 2014-10-27 23:16:54