次のコードがあります。アクションにリダイレクト - ユーザーがキャンセルボタンをヒットした場合"try"ブロックから飛び出す "クリーン"な方法はありますか?C#で例外を除いて
try
{
if (vm.SubmitAction == "Cancel")
return RedirectToAction("ShowSummary", new
{
ds = vm.Meta.DataSourceID
}); <------------------------------------------- xxxx
_account.ValidateNoDuplicate(vm.Account);
vm.Account.Modified = DateTime.Now;
vm.Account.ModifiedBy = User.Identity.Name;
_account.AddOrUpdate(vm.Account);
}
catch (Exception e) {
log(e); return View("CreateEdit", vm);
}
return RedirectToAction("ShowSummary", new {
ds = vm.Meta.DataSourceID
});
私は(xxxxは<とここにマーク)のコードを持っています。このコードはtryブロックの後のコードと同じです。私のコードがtryから抜けるようにする方法はありますか?私が考えることができる唯一の方法は、例外をトリガすることであり、ユーザがキャンセルをクリックする際のエラーではないので、例外を使用するものではなくクリーンなジャンプが必要です。
きれいに終了するとどういう意味ですか?コードはメソッド呼び出しの結果を返しています。メソッドが例外を呼び出さない限り、コードは呼び出しの実行後にreturnを介してtryブロックから終了します。 –
このコードでは、3つの方法でも匂いがします:1) 'DateTime.Now'は現地時間を使用します。すなわち「DateTime.UtcNow」。 2)メソッドのサービスまたはパラメータである必要があります。それは静的であり、それは変わって、悪い組み合わせです。 3)あなたはキャッチオールです。通常は、ローカルで特定の例外を捕捉し、トップレベルのハンドラでは一般的な例外を捕捉します。 – CodesInChaos