Madoka Chomado
You Are Reading

[C#] [Android] [Xamarin] try-catch

0

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)


Madoka Chomado (ちょまど)

千代田まどかです。よくちょまどと呼ばれます。Microsoft 社員。文系出身プログラマ兼マンガ家です。私の書いた記事一覧がこちらです

コメントを残す

メールアドレスが公開されることはありません。