相关疑难解决方法(0)

为什么NullReferenceException不包含有关null的信息?

除了基类数据(如堆栈跟踪)之外,NullReferenceException背后的设计决策是什么,不包含任何运行时特定的信息?是否有Visual Studio的扩展,可以直接告诉你表达式的哪一部分为空?

c#

70
推荐指数
3
解决办法
9678
查看次数

我应该捕获异常才能记录它们吗?

我是否应该捕获日志记录的异常?

public foo(..)
{
   try
   {
     ...
   } catch (Exception ex) {
     Logger.Error(ex);
     throw;
   }
}

如果我在每个层(DataAccess,Business和WebService)中都有这个,这意味着会多次记录异常.

如果我的图层在单独的项目中并且只有公共接口中有try/catch,那么这样做是否有意义?为什么?为什么不?我可以使用不同的方法吗?

c# logging exception-handling

27
推荐指数
3
解决办法
7394
查看次数

"对象引用未设置为对象的实例":为什么.NET不能显示更多详细信息?

" 对象引用未设置为对象的实例 "

为什么异常不会显示对象引用字段的名称,或者至少显示其类型?

这可能是.NET中最常见的运行时错误之一.尽管System.Exception具有堆栈跟踪,但没有其他有用的详细信息.

在一年的过程中,我花了几个小时筛选堆栈跟踪(通常在我没写的代码中),希望有一个来自".pdb"文件的行号,然后在代码中查找行,即使这样,它也是通常不明显该线上的哪个引用为null.拥有参考字段的名称将非常方便.

如果System.ArgumentNullException实例可以显示方法参数的名称(" Value不能为null.参数名称:value "),那么System.NullReferenceException实例肯定可以包含null字段的名称(或其包含的集合).

.net c# vb.net

15
推荐指数
2
解决办法
5744
查看次数

你能捕获抛出 NullReferenceException 的对象的名称吗?

有没有办法找出是什么特定对象导致了NullReferenceException?我已经阅读了关于故障排除NullReferenceException页面,它谈到了在调试器中检查变量并查看异常消息。

如果异常是在生产代码中引发的,因此您无法运行调试器来检查变量怎么办?异常消息显示了堆栈跟踪,因此您可以查看抛出异常的方法,但它没有说明是哪个特定对象null

我希望能够将对象的名称添加null到错误消息中,这样当我查看用户的报告并遇到 . 时NullReferenceException,我可以轻松查看对象是什么null并修复它。有谁知道这样做的方法吗?

我也发现这个问题提出了同样的问题,但它是从 2011 年开始的,我不知道从那时起是否有任何变化。

编辑这个问题,这是标记为重复的确是重复的,但也是很老的(2008)。从那以后有什么改变吗?

编辑 2:我在谷歌搜索这个问题时发现了一点。Visual Studio 可以告诉你是什么抛出了NullReferenceException; 有什么方法可以利用它将其添加到日志文件中吗?

c# logging nullreferenceexception

5
推荐指数
1
解决办法
401
查看次数