4

Elmah (ASP.NET のエラー ログ機能) を使用してサイトを展開し、サーバーにコントローラーを送信するまで、私はまったくの無知から自分の Web サイトで盲目的に飛んでいたことを認めます。キャッチされていないすべての JavaScript 例外。これは控えめに言っても目を見張るような経験でした。

私のサイトの 1 つには、1 日あたり約 150 ~ 200 人の訪問者がいます。ほぼ 1 日に 1 回、次のような Elmah JavaScript スタックトレースを取得します。

CCS.Exceptions.JavaScriptException: Unspecified error.: at document path
    'http://www.*******.com/*****'. at anonymous('Unspecified error.',
    'http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.0/jquery-ui.min.js', '5')
    at anonymous()

私はJavaScriptとWeb開発全般に比較的慣れていないので、アドバイスをいただければ幸いです。

  • このような問題の根本原因を突き止めるにはどうすればよいですか? 本番環境 (特に JavaScript) での問題をデバッグするためのアドバイスはありますか?

  • これを重要度でどこにランク付けしますか? 私の皿のすべてを知らなければ、その質問に答えるのはほとんど不可能であることを私は理解しています. しかし、私が望んでいるのは、この種のものを優先するためのアドバイスです. 私の髪は燃えていますか?または、「まあ、これは非常に一般的であり、最近のすべてのブラウザーと OS を考えると、この種のことは必ず起こることです。」

4

2 に答える 2

1

これらの例外のそれぞれが、設計どおりに機能していない Web ページである可能性はかなり高いです。その優先順位を理解するには、次のことを理解する必要があります。

  1. ページビューの何パーセントが影響を受けていますか?
  2. 具体的な例外とはどのようなもので、どのような問題が発生するのですか?
  3. そのトラブルがあなたのビジネスにとってどれほど重要か。
  4. これらを特定して修正するのにどれくらいの時間がかかりますか? また、そのビジネス上の重要性は、他のプロジェクトと比べてどうですか?

一般に、これらの質問に対する答えは、さらに調査しなければわからないため、完全に理解されていないすべての例外は悪いことであり、少なくとも理解する必要があると判断する必要があります。

または、調査プロジェクトを立ち上げてこれらの質問に関連する情報をさらに入手し、それを修正するかどうかを決定する必要があります。

または、さらに調査する必要があるほど、Web サイトに関する問題の報告を十分に聞いていないと判断する必要があります (個人的には、このオプションは好きではありません。問題ではないと推測しているからです)。

あなたのビジネスについて詳しく知らなくても、調査プロジェクトの予算を立てて計画し、これらのエラーの原因を突き止め、サイトのユーザビリティへの影響を理解することをお勧めします。いくつかのデータを手元に置いて意思決定を行うことは、推測するよりもはるかに優れています。


デバッグに関しては、最終的にはコードのどの行が例外をトリガーしているかを調べる必要があります。また、エラーを生成しているブラウザー構成を記録することもできます (ブラウザーのバージョンに関連する問題の場合)。スタックトレース レポートの各情報が何を意味し、何を伝えているのかを理解することから始めて、Elmah システムで例外のより詳細な追跡を有効にできるかどうかを調べることができます。そうでなく、エラーの発生元を大まかに把握できる場合は、独自の例外ログを実装して、追加情報を取得できる可能性があります。

サイトにあるトラブル チケット レポートを閲覧することもできます。これは、これらの例外と関連している可能性のあるサイトの問題に関する内部または外部のレポートがある場合があるためです。

于 2013-01-17T01:58:11.723 に答える
0

JavaScript エラーは、原因を突き止めるのが難しい場合があります。あなたができる最善のことは、JavaScript がきれいに書かれていることを確認し、すべてを名前空間に入れてウィンドウ オブジェクトをできるだけきれいに保ち、JavaScript ライブラリが手に負えないときによくある問題である変数巻き上げを避けることです。以下は、私が全面的に使用する推奨の名前空間パターンです -

/* Namespace pattern */
var myAppNamespace = myAppNamespace || {};
(function(ns) {
    ns.doSomething = function() {
        // enter code here
    };
}(myAppNamespace));

/* Usage */
myAppNamespace.doSomething();
于 2013-01-17T02:03:04.433 に答える