Androidアプリを作っていて,
Android のバージョンが KitKat 未満の時にクラッシュする処理を書いてしまい, それを対処するべく次のようなコードを書きました.
try { return KitKat のコード } catch (Exception) {// SdkInt(OS のバージョン) < KitKat の時に常に発生する例外 return KitKat 以前のコード }
でも,
try は軽いんですが, throw されて catch するのは, 割と重めのオペレーションになるそうで,
次のように書き換えました.
if (Build.VERSION.SdkInt >= BuildVersionCodes.Kitkat) { try { return KitKat のコード } catch (Exception) { // SdkInt < KitKat の時に常に発生する例外 // Fall through } } return KitKat 以前のコード
throw が稀にしか起こらず, catch には滅多に行かない, というケースであれば, 普通に try/catch でも大丈夫だけど,
そうでないなら, 処理を軽くするために, 後者のほうが望ましいようです
(gist: https://gist.github.com/chomado/a2813aa17b24e5584aa9)