浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

【Objective-C】try-catch処理でわざと例外を発生させる

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 は、trycatch のどちらが実行されていたとしても常に最後に実行されます。

一方で、例外が発生しなかった場合は、try で記述された処理が全て実行され、その後 finally の処理が実行されます。
当然ですが、catch 内の処理は実行されません。

 

さて、この try-catch 内でわざと例外を発生させる方法ですが、例外を発生させたいタイミングで下記のコードを実行するだけです!

// わざと例外処理を発生させる処理
[[NSException exceptionWithName:@"Exception" reason:@"TestCode" userInfo:nil] raise];

こちらを try の中に記述しておくと、これが実行されたタイミングで例外が発生し、catch 内の処理が実行されます。
実際に実行してみたところ、意図したタイミングで例外が発生し、catch 内のログが出力されました!
アプリの動作チェックで、わざと例外を発生させなければいけない時に是非ご活用ください!

 

以上、Objective-C で開発したアプリ内の try-catch 処理で、わざと例外を発生させる方法についてでした。
ご参考になれば幸いです。

  • この記事いいね! (0)