我如何处理以下语句的NullReferenceException,因为如果在使用URL路由时查询字符串中不存在以下语句,则会出现空异常错误
string lang = RouteData.Values["Language"].ToString();
错误详情
描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。
异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。
答案 0 :(得分:4)
您收到此异常是因为RouteDate.Values [" Language"]为空,并且您正在对其应用实例方法.ToString。
只需添加一个if来检查null
string lang="";
if(RouteData.Values["Language"] != null)
lang = RouteData.Values["Language"].ToString();
答案 1 :(得分:3)
较新版本的.NET支持:
string lang = (RouteData.Values["Language"] ?? String.Empty).ToString();
对其他数据类型也很方便:
int langId = Convert.ToInt32(RouteData.Values["LanguageId"] ?? 0);
答案 2 :(得分:1)
试试这个:
string lang = RouteData.Values["Language"] != null
? RouteData.Values["Language"].ToString()
: String.Empty;