2017-06-26 8 views
-1

iOSで致命的なエラー(あらゆる種類のエラー)を処理することはどういうことですか?私は、アプリを消滅させる前に何かが間違っていたことをユーザーに知らせるために、アプリを生き残らせる魔法の方法を探しているわけではありません。iOSで致命的なエラーを処理する

答えて

0

致命的なエラーは、ランタイムエラーです。 は、プログラミングエラーを示しているため、致命的なエラーをキャッチしないでください。代わりにコードを修正する必要があります。クラッシュは、コードにエラーを修正しない限り、停止できないように構築されています。あなたが何かが間違っていたことをユーザーに知らせることは、あなたが正しく動作させない限り、実行できず、とにかく助けにならないでしょう。あなたのコードを変更しない限り、彼らは、停止できないことを、私たちはdo-try-catch構造に致命的なエラーの原因となるものを置くことができることを証明する

do{ 
    var car: String? = nil 
    try print(car!) 
} 
catch{ 
    print("Something went worng") 
} 

明らかに、これはまだでクラッシュ:

fatal error: unexpectedly found nil while unwrapping an Optional value.

代わりにプログラムを修復する必要があります。

+0

私はそれが私がクラッシュからアプリを停止する方法を探していないと書いている方法だと思う。私はちょうどアプリがクラッシュする前にいくつかのコードを実行する方法がいくつかあるのだろうかと思っています。基本的に私が達成したいのは、何らかの形でクラッシュイベントを "観測"し、クラッシュイベントでユーザーにアラートを表示し、次にユーザーが[OK]をクリックする - クラッシュに進む – user3581248

+1

@ user3581248できません。 –

+0

なぜdownvote? –

0

nilのラッピングのような問題が発生した場合、2つの状況が発生することがあります。正しい試行錯誤があり、エラーが検出された場合、アプリは引き続き動作します。そうしないと、アプリケーションがクラッシュするという致命的なエラーが発生します。したがって、致命的なエラーは例外処理の欠如の結果であり、クラッシュが発生する前にユーザが何かを停止して表示できるものではありません。

0

他にも言及したように、致命的なエラーは発生しません。そのエラーが起こらないようにするためにできることはすべて実行してください。

do catchブロックを使用したり、オプションを正しく処理したりすることを防ぐことができます。私はそれについてAppleのドキュメントを読むことをお勧めします!がんばろう!

0

ガードステートメントを使用すると、エラーを直接ユーザーに通知する方法はありませんが、ガードステートメントを使用すると、最初にオプションの値が存在するかどうかを確認し、オプションの値が存在しない場合は早期に戻ります。これは時々クラッシュからあなたのアプリを保存します。

関連する問題