

今やろうとしていることは、try catchでcatchした所に入ったエラーをajax処理してメールを飛ばそうとしています。

ただ、今まであったjavascriptのコードの大枠にtry catchをしてもcatchされません。  
ただ、エラーが出ているコードにtry catchするとcatchしてくれます。

追記20200903  
try catchを大枠でとれないのを確認出来たので、各関数内に全て仕込んだらcatch出来るようになりました。  
全部とれているかは自信がありませんが・・・(その理由は関数の中に変数を入れる関数があったりその場合はとれないかなと思っているので・・・)


CC BY-SA 4.0
2019-06-21T04:33:21.457
55961
2020-09-03T01:32:27.667
2020-09-03T01:32:27.667
20350
20350
question
javascript
javascript try catchについて


> 今まであったjavascriptのコードの大枠にtry catchをしてもcatchされません。  
>  ただ、エラーが出ているコードにtry catchするとcatchしてくれます。  
>  何かやりかた間違えているのでしょうか？

正しいです！

try
catchは、予期せぬエラーや例外が発生した時に、「例外が起きたので、プログラムを停止します」と放棄するのではなく、何らかの善後策（発生したエラーや例外の詳細を示す等(デバッグに役立つ)、何らかの対処（使っていたファイルを全てクローズしてデータが失われることを防ぐ等））を行う仕組みですから。


CC BY-SA 4.0
2019-06-21T07:29:32.397
55969
2019-06-21T07:29:32.397
217
55961
answer


(情報が不足しているので、的はずれな回答の可能性があります)

`try { ... } catch`
で捕まえられるのは、これらで囲んだブロックが始まってから終了するまでに実行されたコードで発生した例外です。このブロック内で定義されただけで実行されていない関数での例外は対象外です。

[code]

    function foo() {
      // この関数からの例外は下記catchで捕まえられる
    }
    
    try {
      foo();
      document.addEventListener("load", function(e) {
        // この関数はcatchまでに実行されないので、
        // 例外は下記catchで捕まえられない
      });
    } catch (e) {
      // …
    }
    
[/code]

ログ目的であれば、`error` イベントが使えるかもしれません。

[code]

    window.addEventListener("error", function(e) {
      // e.error が例外
    });
    
[/code]


CC BY-SA 4.0
2019-06-24T09:39:15.830
56063
2020-09-01T09:27:31.993
2020-09-01T09:27:31.993
32986
3475
55961
answer