Objective-C で開発しているアプリでバグが発生しているため try-catch
の処理を追加したのですが、私の環境では例外が発生せず、正常に catch
の処理が実行されるかを確かめたかったので、その方法についてです。
ビルドエラーにならないバグを修正するのはやはり苦手です…。
参考にさせていただいた記事はこちら。
iOS SDKメモ try-catch-finallyの構文を使ってみる – tetsuyanbo
https://www.tetsuyanbo.net/tetsuyanblog/9885
まず、そもそも try-catch
の処理は下記のように記述します。
@try { // 実行したい処理 } @catch (NSException *exception) { // 例外の内容をコンソールへ出力する NSLog(@"name :%@",exception.name); NSLog(@"reason:%@",exception.reason); } @finally { // try-catch の処理が終わった時に実行したい処理 }
こんな感じです。
で、もし try
の中で記述した処理の中で例外が発生した場合に、例外が発生する直前の処理までが実行され、その後、catch
の中で記述された処理が実行されます。
今回は catch
の中ではログを表示するようにしているので、どのような例外が発生したのかがわかります。
そして最後に finally
の中で記述された処理が実行されます。
なお、この finally
は、try
と catch
のどちらが実行されていたとしても常に最後に実行されます。
一方で、例外が発生しなかった場合は、try
で記述された処理が全て実行され、その後 finally
の処理が実行されます。
当然ですが、catch
内の処理は実行されません。
さて、この try-catch
内でわざと例外を発生させる方法ですが、例外を発生させたいタイミングで下記のコードを実行するだけです!
// わざと例外処理を発生させる処理 [[NSException exceptionWithName:@"Exception" reason:@"TestCode" userInfo:nil] raise];
こちらを try
の中に記述しておくと、これが実行されたタイミングで例外が発生し、catch
内の処理が実行されます。
実際に実行してみたところ、意図したタイミングで例外が発生し、catch
内のログが出力されました!
アプリの動作チェックで、わざと例外を発生させなければいけない時に是非ご活用ください!
以上、Objective-C で開発したアプリ内の try-catch 処理で、わざと例外を発生させる方法についてでした。
ご参考になれば幸いです。