2017-03-22 16 views
0

私はアプリストアでUnityモバイルゲームを手に入れました。プレイヤーから私のサーバーにメールを送信して、起こったことが起こっていないことを知らせる機能を持っています。たとえば私が書いたtryが失敗すると、バグがあるはずです。Unityですべての例外をキャッチ

OnExceptionハンドラのようなものを作成すると、私が書かなかったコードも含め、発生したすべての例外について電子メールが送られますか?いくつかの例外は、私が使用するプラグインから来るかもしれないので、何らかの例外が呼び出されるたびに何かのリスナを持っていたいと思います。

これは可能ですか?

+1

と思われます。何を試しましたか? – PJvG

答えて

1

他のプラグインでは他のすべての例外をキャッチできません。ユニティの

新しいバージョン:ユニティ

void OnEnable() 
{ 
    Application.logMessageReceived += LogCallback; 
} 

//Called when there is an exception 
void LogCallback(string condition, string stackTrace, LogType type) 
{ 
    //Send Email 
} 

void OnDisable() 
{ 
    Application.logMessageReceived -= LogCallback; 
} 

古いバージョン:

void OnEnable() 
{ 
    Application.RegisterLogCallback(LogCallback); 
} 

//Called when there is an exception 
void LogCallback(string condition, string stackTrace, LogType type) 
{ 
    //Send Email 
} 

void OnDisable() 
{ 
    Application.RegisterLogCallback(null); 
} 

をUnityはUnityが例外を受け取るためにあなたのAPIを提供し、バックグラウンドで、それがキャッチすることを行いますlogMessageReceivedThreadedもあります。

EDIT

スタックトレースの問題

stackTraceパラメータは、あなたがまだLogCallback関数内ながら手動でスタックトレースを自分で取得するためにSystem.Diagnostics.StackTraceクラスを使用することができます空の場合。たとえば、

void LogCallback(string condition, string stackTrace, LogType type) 
{ 
    //Send Email 

    System.Diagnostics.StackTrace sTrace = new System.Diagnostics.StackTrace(); 
    Debug.Log(sTrace.ToString()); 
} 
+0

これはかなり簡単です。私はできるだけ早くそれをテストするつもりです。 – Tavados

+0

Unity Proに切り替えると、これは基本的に冗長になります。これは、Unity Performance Reportingがこれを行います。そうではありませんか? – Tavados

+0

これは「Unity Performance Reporting」にあるので、Proをお持ちの場合はこれは必要ありません。 「Unity Performance Reporting」を使用していても、上記のコードでエラーを報告する企業もあります。 Unity Performance Reportingを使うとUnityのサーバに依存します。彼らのサーバーがダウンしている場合は、あなたはねじ込まれています。 Amazonサーバーが一度ダウンしたときと同じように、一度サーバーがダウンしたのを見たことがあります。あなたは常に、他の企業のサーバーに依存しないようにあなたのアプリケーション/ゲームを作るべきです。 – Programmer

0

Hockey Appをチェックしてください。本当に素敵なツールは、ユニティsdkを持って、あなたが必要とするものを正確に行います。すべてのDebug.LogErrorまたはDebug.LogExceptionがそこに報告されています。したがって、コード例外だけでなく、データが欠落しているか、またはエラーとして報告したいことについて通知を受けることができます。

関連する問題