アプリケーションのクラッシュを防ぐことはできますか?
多くのアプリケーションで多くのクラッシュが発生しますが、クラッシュの理由を見つけるのが非常に難しく、解決策を見つけるのに時間がかかることがあります。
クラッシュの原因を教えてくれるコード スニペットがあるかどうか、または @try-@catch を使用してクラッシュを防止できるかどうかを知りたいだけです。
@try-@catch で回避できる場合、どのように、どこに try-catch を配置すればよいですか?
クラッシュを分析し、原因を診断し、それを防ぐためにコードを記述または変更することで、クラッシュを防ぐことができます。
残念ながら、ソフトウェア開発は単なる最初のタイピング以上のものです。テストとバグ修正は、時間の大部分を費やす場所です。それがあなたにとって退屈すぎるなら、私は別の職業をお勧めします。
私はこの解決策を探していました。よりわかりやすいトレースは、次の方法で出力できます。これは、適切な理由を見つけるのに役立つと思います。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
}
void uncaughtExceptionHandler(NSException *exception) {
NSLog(@"CRASH: %@", exception);
NSLog(@"Stack Trace: %@", [exception callStackSymbols]);
}
アプリケーションのクラッシュは防止できません。しかし、それを使用してより詳細なトレース ログを取得できます。私の質問が間違っており、不明であることを認めます。わかりづらくてすみません。
私はこれに再び時間を費やしていました。最後に、アプリで例外または BAD_ACCESS をキャッチする記事とデモを入手しました。したがって、これはすべての開発者が自分のアプリに SUBMIT BUG のような機能を提供するのに非常に役立ちます。これにより、ユーザーが例外を受け取ったときはいつでも続行するか終了するか、開発者にクラッシュ レポートを送信できます。その本当に本当に役に立ちます。私はすべてのプロジェクトで実装するつもりです。
マット・ギャラガーの記事はこちら
http://cocoawithlove.com/2010/05/handling-unhandled-exceptions-and.html
マット・ギャラガーに感謝します。
次のように、try-catch-finally ブロックを使用して、アプリのクラッシュを回避できます。
-(void)functionInsideWhichAppIsCrashing
{
@try
{
//Your crashing code goes here
}
@catch ( NSException *e )
{
NSLog(@"Crash Reason:@"%@", [e reason]);
}
@finally {// Do whatever you want to do in crash situation
}
}