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 処理で、わざと例外を発生させる方法についてでした。
ご参考になれば幸いです。