Objective-Cで例外を処理する方法を教えてください。私はコーディング中にNSInvalidArgumentException
を取得しています。ブレークポイントを使用して、例外がどこで発生しているのか把握することができます。私はこのようなものを試しました:Objective-Cでの例外の処理
@try{
//My code
}
@catch(id e){
}
しかし、それは動作していません。
Objective-Cで例外を処理する方法を教えてください。私はコーディング中にNSInvalidArgumentException
を取得しています。ブレークポイントを使用して、例外がどこで発生しているのか把握することができます。私はこのようなものを試しました:Objective-Cでの例外の処理
@try{
//My code
}
@catch(id e){
}
しかし、それは動作していません。
:マット・ギャラガーによって、このブログSTを読みますあなたのコードのバグを示しています。 Kenが言うように、事実上制御されたクラッシュです。この例外の最も一般的な原因は、例えばnil
をコリジョンに挿入しようとしていることです。 NSMutableArray
またはNSMutableDictionary
。それが問題であれば、 "Objective-C例外で停止"を有効にして、デバッガでコードを実行することで簡単に見つけることができます。
ココアでは、特別な情報(例外はありませんが、< - ha!)を含むクラッシュとして例外を考えるべきです。
NSInvalidArgumentException例外を処理する必要はありません。なぜそれが起こったのかを理解し、それが起こらないようにコードを変更する必要があります。 Objective-Cの例外にXCodeの、選択停止中ファイル名を指定して実行メニューへ
移動します。これで、実際に例外をスローしている場所でコードが停止するので、どの行でトリガされたのか正確に確認できます。
例外を生成しないコードを書くよう常に努力する必要があります。つまり、iOSで例外を処理することができます。しかし
@try
{
//Your code
}
@catch(NSException* e) // or subclass of NSException
{
}
そのままあなたは、NSInvalidArgumentException
をキャッチしたくない:あなたがこれを行う必要があるObjective-Cで例外をキャッチするには http://cocoawithlove.com/2010/05/handling-unhandled-exceptions-and.html
あなたの質問に実際のエラーメッセージを貼り付けてください。 – bbum
私はあなたの質問を英語に似て書き直しましたが、私はあなたの最初の点を保存していることを願っています。私が何かを台無しにした場合は教えてください。乾杯! –