0

私はいくつかのフラッシュアプ​​リに取り組んでいます。ここで、顧客側をテストするために、ログを保存してエラー メッセージを表示する Flash Player デバッガー バージョンを使用できます。顧客側に展開すると、通常の Flash Player バージョンが使用されます。つまり、エラーが発生した場合にエラー メッセージにアクセスできなくなります。そのため、すべてのトレース メッセージをコードとエラー テキストでキャプチャするツールを装備したいと考えています。かなり単純なトレース メッセージについては、コード内の関数をオーバーライドして、トレース メッセージを含む POST 要求をロガー サーバーに送信するだけですが、エラー メッセージを取得するにはどうすればよいでしょうか? これまたは誰かが提案できるトリックに対する既知のアプローチはありますか?

4

2 に答える 2

1

ブラウザのデフォルトとして Flash のデバッグ バージョンをインストールできます (Chrome では、組み込みプレーヤーを無効にする必要があります)。したがって、ユーザー エクスペリエンスをテストしデバッグする場合は、これが理想的なソリューションです。

ただし、質問に答えるには、すべてのエラーを普遍的にキャッチしてリダイレクトする方法はありません (私が知っている)。問題のコードを事前にtry...catchステートメントでカプセル化し、プロパティを に送り返す必要がありますcatch。例えば:

try {
    this["foo"]();
} catch (e:Error) {
    trace(e);
}

デバッグ バージョンでは、トレースされた値は次のようになりますTypeError: Error #1006: value is not a function. 。標準バージョンでは , (特に説明の少ないエラー) のみが出力さTypeError: Error #1006れますが、エラーが発生した場所への参照はありません。これを取得するには、Error.getStackTrace()を使用して、コール スタックとエラーが発生した行を確認する必要があります。デバッグでは、これにより次が出力されます。

TypeError: Error #1006: value is not a function.
    at Shell_fla::MainTimeline/init()[C:\Projects\shell.as:91

標準クライアントでは、がっかりしnullます。つまり、クライアント バージョンから貴重な情報を取得することはできません。

私ができる最善のアドバイスは、独自のカスタム エラー レポートを使用して問題のコードを記述することです。たとえば、IO エラーをキャッチし、ロードに失敗したファイルをトレースするかobject.fooif (object.hasOwnProperty("foo")) { // do something } else { trace("foo not found in " + object.name) }. 防御的にコーディングします。

乾杯、

于 2013-10-17T18:52:49.527 に答える
1

StackOverflow でこの投稿を発見しました: Flex ですべての例外をキャッチする方法は?

それは私の質問に答えます。質問する前にグーグルで調べていたときに遭遇しなかったのは奇妙なことです。

于 2013-11-08T12:13:20.937 に答える