try
C#でインラインステートメントを呼び出すことは可能ですか?
私は自分のウェブサイトの言語を検出していますが、言語がen-GR
何らかの理由でクライアント側のようなものである場合、.NET が例外をスローすることがあります。だから私は実際に何かを捕まえていなくても、try
そしてまた使用する必要があります。catch
この状況では、完全にやり過ぎのように思えます。
// Set allowed languages
string[] allowedLanguages = { "en", "fr", "ru" };
// Get all possible values
var routeLanguage = (filterContext.RouteData.Values["lang"] != null && allowedLanguages.Contains(filterContext.RouteData.Values["lang"].ToString())) ? filterContext.RouteData.Values["lang"].ToString() : null;
var cookieLanguage = (filterContext.HttpContext.Request.Cookies["lang"] != null && allowedLanguages.Contains(filterContext.HttpContext.Request.Cookies["lang"].Value)) ? filterContext.HttpContext.Request.Cookies["lang"].Value : null;
string clientLanguage = null;
try
{
clientLanguage = (filterContext.HttpContext.Request.UserLanguages != null) ? new CultureInfo(filterContext.HttpContext.Request.UserLanguages[0]).TwoLetterISOLanguageName : null; // Exception sometimes without `try`
}
catch (Exception)
{
}
編集
ユーザーが自分のカルチャ情報に何を持っているかを制御できないため、例外は修正できるものではありません。.NET は、en-FR を無効なものと見なします。