[解決済み] fs.readFileSync()でファイルがない場合、どのようにキャプチャしますか?
質問
node.js内
readFile()
はエラーを捕捉する方法を示しています。
readFileSync()
関数は、エラー処理に関するものです。そのため、ファイルがないときにreadFileSync()を使用しようとすると、次のようなエラーが発生します。
Error: ENOENT, no such file or directory
.
スローされる例外はどのように捕捉すればよいですか?ドコにはどんな例外が投げられるか書いていないので、どんな例外をキャッチすればいいのかわかりません。私は、一般的な「ありとあらゆる例外をキャッチする」スタイルの try/catch ステートメントが好きではないことに注意してください。この場合、ファイルが存在しないときにreadFileSyncを実行しようとすると発生する特定の例外をキャッチしたいのです。
なお、同期関数は起動時に接続を試みる前にのみ実行しているので、同期関数を使うべきでないというコメントは不要です :-)
解決方法は?
基本的には
fs.readFileSync
は、ファイルが見つからない場合にエラーを投げます。このエラーは
Error
プロトタイプを使用してスローされます。
throw
したがって、キャッチする唯一の方法は
try / catch
ブロックを作成します。
var fileContents;
try {
fileContents = fs.readFileSync('foo.bar');
} catch (err) {
// Here you get the error when the file was not found,
// but you also get any other error
}
残念ながら、プロトタイプ・チェーンを見ただけでは、どのエラーが投げられたかを判断することはできません。
if (err instanceof Error)
がベストで、これは(すべてではないにせよ)ほとんどのエラーに当てはまります。したがって、私は
code
プロパティを設定し、その値を確認します。
if (err.code === 'ENOENT') {
console.log('File not found!');
} else {
throw err;
}
こうすることで、この特定のエラーにのみ対処し、他のすべてのエラーを再スローすることができます。
また、エラーの
message
プロパティで、詳細なエラーメッセージを確認することができます。
ENOENT, no such file or directory 'foo.bar'
お役に立てれば幸いです。
関連
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] npm installの-saveオプションは何ですか?
-
[解決済み] npm package.jsonファイルのdependencies, devDependencies, peerDependenciesの違いは何ですか?
-
[解決済み] package.jsonの各依存関係を最新バージョンに更新する方法は?
-
[解決済み] Node.jsで終了する方法
-
[解決済み] PHPのエラーを表示させるにはどうしたらいいですか?
-
[解決済み] Try-catchは私のコードをスピードアップさせるか?
-
[解決済み] Node.jsの例外処理のベストプラクティス
-
[解決済み] 警告をtry/catchすることはできますか?
-
[解決済み】C#で例外をキャッチして再スローする理由とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 再インストールを繰り返しても、npm run でモジュール 'sass' が見つからない。
-
[解決済み】passport.js passport.initialize() ミドルウェアが使用されていません。
-
[解決済み】「npm install」と「npm rebuild」の違いとは?
-
[解決済み】Mongooseで、日付でソートするにはどうしたらいいですか?(node.js)
-
[解決済み】NPMインストールエラー:解析中の予期せぬJSON入力の終了 '...nt-webpack-plugin": "0'' 付近。
-
[解決済み] bodyParser は非推奨です express 4
-
[解決済み] Passport JSのreq.isAuthenticated()はどのように実装されていますか?[クローズド]
-
[解決済み] AWS s3 api error: specified bucket does not exist.
-
[解決済み] ノードマータ予期せぬフィールド
-
[解決済み] npm not able to find a fileに関連するエラーは何が原因でしょうか?node_modules サブフォルダ内にコンテンツがありません。なぜでしょうか?