C# System.NullReferenceException为何不提示错误所在?

注意我不是问 出现 System.NullReferenceException 怎么办,而是弹出这个错误之后代码中却并没有任何地方提示出错误代码。
我是在用子线程打开新窗体的程序中遇到的问题。
最新回答
你模仿不起

2022-04-27 11:48:03

C# System.NullReferenceException为何不提示错误所在,设置错误造成的,解决方法如下:

1、打开Visual  Studio软件,先来模拟一个会报错的场景,如下图所示,除数为0是不能通过运算的。

2、运行页面程序以后,就会看到C#返回了如下图所示的错误页面。

3、接下来打开Web.config文件,在其中配置customeErrors参数,如下图所示,设置403和404的错误重定向。

4、然后就是新建403的错误跳转页面,如下图所示,403是一些错误的提示页面。

5、然后新建页面,输入如下图所示的信息,用来提示用户要访问的页面没有找到。

6、最后在访问页面程序,会发现现在提示的页面已经没有那么多错误信息了,看起来很友好了。

素年凉音°

2023-06-15 04:01:21

导致NullReferenceException异常代码可能比较“隐蔽”。如下代码所示,通常的原因是因为对象为null时,引用这个对象的方法或属性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

上面代码虽然不是窗体代码,但在窗体中出现NullReferenceException的情形和原因与上面代码是一样的,没有差异

class Test
{
    private int v;
    public int Value
    {
        get{return this.v;}
        set{this.v = value;}
    }
    public void SomeMethod()
    {
        //……
    }
 }
  
 //使用Test:以下三行代码不会抛出NullReferenceException异常
 Test t = new Test();
 t.SomeMethod();
 t.Value = 10;
  
//现在,将t设置为null
t = null;
// 以下代码会引发NullReferenceException。因为实例t已经为null
try
{
    t.Value = 100;
    t.SomeMethod();
}
catch(NullReferenceException e)
{
    // 显示异常
    Console.WiriteLine(e.ToString());
}