質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.47%
JavaScript

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

Q&A

解決済

1回答

176閲覧

jsで特定のエラーの時だけ自分で設定したエラーメッセージをアラートで表示したい

syoozu

総合スコア18

JavaScript

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

0グッド

0クリップ

投稿2019/07/29 07:47

今いくつかのエラーパターンがあるシステムを作っています。
そしてエラーがある時はalert(e)でその内容を表示しています。
そのエラーの中から特定の、具体的にはInvalidStateErrorの時だけメッセージを「読み取りを中止します」にしたいです。
以下ソースです。do内のfinishButtonクリック時に該当エラーが出ます
よろしくお願いします。

startButton.addEventListener('click', async () => { let device; try { device = await window.navigator.usb.requestDevice({ filters: [{ vendorId: 0x054c, productId: 0x06C3, }]}); console.log("open"); await device.open(); } catch (e) { console.log(e); alert(e); throw e; } try { console.log("selectConfiguration"); await device.selectConfiguration(1); console.log("claimInterface"); await device.claimInterface(0); console.log(device); startButton.style.display = 'none'; readingMessage.style.display = 'none'; waitingMessage.style.display = 'block'; finishButton.style.display = 'block'; do { await session(device); await sleep(100); finishButton.addEventListener('click',function() { device.close(); }); } while (true); } catch (e) { console.log(e); alert(e); try { device.close(); } catch (e) { console.log(e); } throw e; } });

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

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

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

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

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

m.ts10806

2019/07/29 07:57

>InvalidStateError どういうときに起きる想定ですか?
syoozu

2019/07/29 08:02

繋がっている外部デバイスの読み取り状態を解除するときに出るエラーです。 NetworkError: A transfer error has occurredと出るのを「読み取りを中止しました」という文言に変更したいです。
guest

回答1

0

ベストアンサー

MDNドキュメントtry...catch 文に書いてある内容で如何でしょうか。

js

1おのおのの条件の catch ブロックは適当な例外処理部分にコントロールを渡します。 2 3try { 4// 関数は 3 つの例外を投げうる 5 getCustInfo("Lee", 1234, "lee@netscape.com") 6} 7 8catch (e if e == "InvalidNameException") { 9// 不正な名前に対しての処理部分を呼び出す 10 bad_name_handler(e) 11} 12 13catch (e if e == "InvalidIdException") { 14// 不正な ID に対しての処理部分を呼び出す 15 bad_id_handler(e) 16} 17 18catch (e if e == "InvalidEmailException") { 19// 不正なメールアドレスに対しての処理部分を呼び出す 20 bad_email_handler(e) 21} 22 23catch (e){ 24// 何が起きるかはわからないが、そのログをとる 25 logError(e) 26} 27

投稿2019/07/29 07:59

m.ts10806

総合スコア80854

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

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

syoozu

2019/07/29 08:17

ありがとうございます。 そちらのページを参考に ``` try{ finishButton.addEventListener('click',function() { device.close(); throw "close_e"; }); }catch (e if (e=="close_e"){ alert('読み取りを中止しました'); } ``` を行ないましたがIncalidStateErrorの方が出てしまいます。
m.ts10806

2019/07/29 08:19 編集

catch複数追加して e == "IncalidStateError" を追加しては?
syoozu

2019/07/29 08:27

ありがとうございます 解決できました
m.ts10806

2019/07/29 08:29

解決されたようでなによりです。 回答に転記したのはあくまで「任意でcatchを設置できる」というところなので、そのあたりで色々試してみてくださいね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問