Overview
「JSON.parse()
は不正な値を渡してしまった時に、例外投げられるのでちゃんと handling した方がいいですよー」と助言をいただいた。
勉強になるなあと思いつつ、Node.js で使える parse() は何種類かあった気がして、他はどうなんだろうと思い勢いで調べてまとめました。
※ @forl_head_officerさんからアドバイスいただき、Error handling した方がいいかどうかは各サービスの仕様に依存しそうだなーと思い直し、parse の挙動まとめの記事にしてみました。
JSON.parse()
渡した String を json として解析してくれるやつ。
不正な値を渡すと SyntaxError
が投げられます。
const parsedJSON = JSON.parse({}); // SyntaxError: Unexpected token o in JSON at position 1
console.log('ここまで来ません');
Error handling するとしたらこんな感じですね。
try {
const parsedJSON = JSON.parse({});
} catch(e) {
// Error handling
console.log(e); // SyntaxError: Unexpected token o in JSON at position 1
console.log('ここには来ます');
}
url.parse()
渡した String を url として解析してくれるやつ。
不正な形式の値を渡すと TypeError
が投げられます。
const url = require('url');
const parsedUrl = url.parse(0, true); // TypeError: Parameter "url" must be a string, ...
console.log('ここまで来ません');
Date.parse()
1970年1月1日00:00:00UTC から、渡した String までの経過したミリ秒数を返してくれるやつ。
不正な値を渡すと、Error は投げずに、NaN が返されます。
const parsedDate = Date.parse(null);
console.log(parsedDate); // NaN
parseInt()
最後に paseInt()、String から整数を返してくれるやつ。
こちらも不正な値を渡すと、Error は投げずに、NaN が返されます。
const parsedInt = parseInt('', 10);
console.log(parsedInt); // NaN
まとめ
parse()
に不正なデータを渡した時...
-
JSON
とurl
は Error を返す。 -
Date
とInt
は NaN を返す。