iOSアプリケーションをXcode 8.2.1のSwift 2で作成しました。これはiOS 10.2用に作られたものです。fatalErrorメッセージをiOSクラッシュログに保存するにはどうすればよいですか?
私はTestFlightから数多くのクラッシュレポートを取得していますが、シンボルにもかかわらず、スタックトレース(引数値なし、ローカル、ヒープオブジェクトなしなど)以外のプログラム状態は表示されません。
...これらの機能の中では、失敗する可能性が高いコード(強制的なアンラップなど)が表示されますが、クラッシュログではどこに障害が発生したのかがわかりません。 Xcodeでデバッグする場合
、私はTestFlightまたはApp StoreのfatalError
がヒットされ、プログラムが終了を使用して展開する場合を除き、"functionFoo returned nil"
または"variable bar == \"" + bar + "\""
のように自分のメッセージを入れることができますどこでfatalError(message: String)
を使用することができますが、message
値ではありませんクラッシュログに保存され、無意味になります。
C#/ .NETやJavaのような他の環境では、私は単純にthrow new SomeExceptionType("my message")
とすることができ、すべての情報はグローバルなcatch(Exception)
ハンドラで利用できます。
iOS/Swiftで同じ目標を達成するにはどうすればよいですか?残念ながら、この解決策はキャッチサードパーティの致命的なエラーをカバーしていない
public func internalCriticalError(_ message: String = "") -> Never {
// Save the message in a crash log here
// ...
fatalError(message)
}
:あなたは、次のようなカスタムメソッドの呼び出しにすべてfatalError
の呼び出しを変更することができ、内部エラーメッセージを格納する
あなたは方法を見つけましたか? –