🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

Q&A

解決済

2回答

5498閲覧

ファイル読み込み時の例外エラーをキャッチしたい

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

0グッド

0クリップ

投稿2019/09/09 12:03

JavascriptでCSVファイルを読み込んでいるのですが、
ファイルがないときに例外エラーをキャッチして、アラートを表示したいのですが、
.pipeの処理をすると、エラーがキャッチできません。

javascript

1 2// CSVファイル(Shift-Jis)を読み込み、ファイルが存在しない場合はエラーメッセージを出したい。 3 4const csv = require('csv'); 5const iconv = require('iconv-lite'); 6const fs = require('fs'); 7 8 // CSVファイル読み込み 9 const stream = fs.createReadStream('D:/test.csv') 10 .pipe(iconv.decodeStream('SJIS')) 11 .pipe(iconv.encodeStream('UTF-8')) 12 .pipe(csv.parse(function (err, csvData) { 13 14 let data = csvData; 15 })); 16 17 // エラー 18 stream.on('error', (e) => { 19 alert(e); 20 });

試したこと

以下のコードだと、エラーが取得できましたが、
pipeをつけるとエラーがキャッチできなくなります。

// CSVファイル読み込み const stream = fs.createReadStream('D:/test.csv') stream.on('error', (e) => { alert(e); });

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

以下のようにするとうまくいきました。

javascript

1 // CSVファイル読み込み 2 const stream = fs.createReadStream('D:/test.csv') 3 stream.on('error', (e) => { 4 alert(e); 5 }); 6 stream.pipe(iconv.decodeStream('SJIS')) 7 .pipe(iconv.encodeStream('UTF-8')) 8 .pipe(csv.parse(function (err, csvData) { 9 10 let data = csvData; 11 })); 12 13

投稿2019/09/10 13:42

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

私が不勉強で試せていないのですが、リンク先に例が挙がっているような書き方ではいかがでしょう。

【Node.jsのStream API - sambaiz-net】
https://nodejs.org/docs/v7.9.0/api/stream.html#stream_readable_pipe_destination_options

面倒だけど、毎度エラーハンドリングする必要がある。

js

1const fs = require('fs'); 2let readable = fs.createReadStream('error.txt'); 3let writable = fs.createWriteStream('output.txt'); 4const errorHandling = (err) => { console.log(err) } 5let piped = readable.on('error', errorHandling).pipe(writable);

投稿2019/09/09 18:49

kei344

総合スコア69596

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/09/10 13:37

ありがとうございます! おかげさまでうまくできました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問