2012-08-02 40 views
0

我在visual studio(成功)中构建我的解决方案,我试图运行它,但由于某种原因,在下面的代码行抛出异常我去了几篇文章,但有没有确切的解决方案如何处理用户代码未处理的空引用异常

public static int GetCurrentPolicyClassId() 
    { 
     **int policyClassId = (int) HttpContext.Current.Session[AppConstants.SK_POLICYCLASSID];** 
     return policyClassId; 
    } 
+1

有些东西在那里......把一个断点放在那一行上,然后你可以看看数据发生了什么。 – Alex 2012-08-02 14:56:20

回答

3

您调用的链中的一个值为null。你只需要获取值前检查:

if(HttpContext != null && 
    HttpContext.Current != null && 
    HttpContext.Current.Session != null && 
    HttpContext.Current.Session[AppConstants.SK_POLICYCLASSID] != null) 
{ 
    // Get the value here. 
} 
else 
{ 
    // Something was null. Either set a default value or throw an Exception 
} 
0

你或许应该检查是否HttpContext != null && HttpContext.Current != null && HttpContext.Current.Session != null

0

任何异常被try/catch(或finally)处理,如果该异常有可能在一般的处理。

例如StackOverflowException无法处理。

您需要:

  • 异常的类型是
  • 理解的原因吧
  • 在此基础上决定是否该异常是在你的应用程序
  • 如果异常行为是,如果程序需要处理它,或者离开程序失败,则使用try/catch来处理它,因为接收到的异常太危险了,最好让所有的东西都失败。
  • 如果这不是异常行为,尝试处理它,例如null检查,或任何...

希望这有助于。

相关问题