• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JavaScriptのエラーの原因)

JavaScriptのエラーの原因とは?

このQ&Aのポイント
  • JavaScriptのエラーの原因について解説します。
  • エラーメッセージによってエラーの原因を特定する方法を紹介します。
  • エラーの解決方法についても触れます。

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.5

> なぜメッセージなしの0だけなのでしょうか? > Promiseのエラーってそういうものなのでしょうか? Promiseだからという事では無く、処理を中断させる行為はエラー(予期せぬ問題)が発生した訳では無く、プログラムを書いた人の意志によって中断されたからメッセージが無いと言う事なんじゃないでしょうか。 この辺りはコーディングのポリシーの問題でしょうね。

takahasi5634
質問者

補足

長々付き合わせてしまい申し訳ありません。ありがとうございました。

その他の回答 (4)

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.4

> D3jsのコードの何行目をかくにんしたんですか? Ver. 5.16.0 のd3.jsを見ましたが、3140行目あたりからメインの動作の骨格となる処理が書かれています。 interrupt() が何をしているのか判りますし、インスタンスを生成する時に動作中の処理があれば interrupt() などで処理を終わらせている事が判ります。 どのような手順で終わらせているのか理解していけば見えてくるんじゃないでしょうか。 大事な点はJavaScript自体が出しているexceptionはキャッチする事無く流しているので、描画処理などでブラウザのJavaScriptエンジンがどのような振る舞いをするのかも考えるといいんじゃないでしょうか。

takahasi5634
質問者

補足

さすがですね。 3982行あたりのtransition_end()の中のon1._.interrupt.push(cancel);をコメントアウトするとエラーがでなくなります。 浅い経験上、エラーをキャッチすると何らかのメッセージが表示されていたので、この0がどこからthrowされるのかさっぱり解りませんでした。表示される0は.data([0])の0だと思うのですが、なぜメッセージなしの0だけなのでしょうか? Promiseのエラーってそういうものなのでしょうか?

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.3

> 内部的に interrupt()が呼ばれる根拠は何ですか? D3.jsのソースを読んだだけです。

takahasi5634
質問者

補足

D3jsのコードの何行目をかくにんしたんですか? 教えてください。 私も確認しましたがplotでは呼ばれてませんよ。

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.2

> interrupt() を削除しても同じエラーはでます。 ボタンを押した時に plot() を再度コールしています。 interrupt() だけを削除すると、動作中の処理を初期化しようとするので強制終了させることになり、結果として内部的には interrupt() が実行されているようです。 > エラーの解決策を知りたいのではありません。エラーの原因が知りたいのです エラー(exceptionが飛ぶ)原因は interrupt() が実行された事です。

takahasi5634
質問者

補足

内部的に interrupt()が呼ばれる根拠は何ですか? どこかのサイトにそのようなことが掲載されていたのなら、そのサイトのURLを教えて頂けませんか? このinterruptはd3jsの関数で単にアニメーションをキャンセルするだけのものですよ。 https://bl.ocks.org/veltman/344418d9602a29825d63

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.1

コンソールに0と表示されるのはexceptionの中身が「0」だからですね。 色が赤なのは console.error() で出力しているからエラーだと解釈されるからです。 console.log() で出力すれば色が変わります。 interrupt() メソッドは処理を強制中断するモノですから、処理が途中で中断されたのでexceptionが飛んでるのでしょう。 while(true){} で無限ループにしているのですからexceptionで中断させるしか終わらせる手段がありません。 キャッチして中身が 0 なら中断後の処理を実行してやればいいんじゃないでしょうか。

takahasi5634
質問者

補足

回答ありがとうございます。 ---console.log() で出力すれば色が変わります エラーだと解らせるためにわざとerrorにしてます。 -----interrupt() メソッドは処理を強制中断するモノですから、処理が途中で中断されたのでexceptionが飛んでるのでしょう interrupt() を削除しても同じエラーはでます。 -----キャッチして中身が 0 なら中断後の処理を実行してやればいいんじゃないでしょうか エラーの解決策を知りたいのではありません。エラーの原因が知りたいのです

関連するQ&A