【问题标题】:Asp.net error object not set to a referenceAsp.net 错误对象未设置为引用
【发布时间】:2011-02-25 05:10:11
【问题描述】:

因为我急于开发(这里有很多鞭子)并在函数顶部声明我的对象并在我的 try-catch 块中实例化,所以我得到了很多旧的“对象未设置为实例”在做 TDD 时出现“对象”错误,后来如果我确实错过了使用该对象的分支(现在做 VB,更喜欢 C#)或只是在日常编码中,对象未设置为对象的实例有点模糊的。当然堆栈跟踪会将我发送到发生错误的行,但是如果我可以修改我的日志记录以命名对象或其类型会很好,因为有时我在同一行上有多个对象。这不是世界末日,但最终它会为我每天节省几分钟。关于如何传递未设置对象的信息的任何想法?谢谢

【问题讨论】:

  • 顺便说一下,这是VB.NET,不是经典的try-catch-finally

标签: asp.net vb.net error-handling


【解决方案1】:

“修改您的日志记录”以输出变量名称或类型并非易事——我确信如果框架可以轻松地从正在执行的 IL 获取此信息,MS 会将它包含在空引用异常中。

预防总比治疗好。以下是我会做的一些提示

修复编译器警告

如果 C# 检测到存在可以使用未分配的局部变量的代码路径,它将生成编译错误。 [出于某种奇怪的原因] VB.Net 仍会编译,但编译器会生成警告 - 请注意这些并修复代码,您将永远不会再遇到未分配变量的问题!

对变量声明采用不同的编码模式

我很欣赏旧 VB 中的方法变量范围,即该变量在整个方法中都是可见的,无论它是在哪里定义的。因此,将所有 var 声明放在方法的顶部是一种合理的做法。 VB.Net 当然是不同的——你只能在声明变量之后使用它们,所以可以(我会说更可取*)将声明(和赋值)放在更接近变量实际使用的位置。如果您的程序逻辑意味着可以使用未分配的变量,这应该有助于您“直观”地看到。

  • 有些人认为这是一种认为将变量声明放在方法顶部的块中总是好的做法。我不会反对它们,但我会说这种方法最适用于不使用大量变量的小方法。

【讨论】:

    猜你喜欢
    • 2011-02-08
    • 1970-01-01
    • 2012-02-03
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 2011-07-09
    相关资源
    最近更新 更多