2010-12-01 78 views
0


我们有一个巨大的Windows应用程序,异常处理很差。应用程序抛出许多地方的对象引用错误,并且系统错误消息向用户显示,因为它使用消息框。对象引用的自定义消息未设置为对象的实例

我要寻找一个简单的解决方案,可用于替换此消息,一些用户友好的整个应用程序

谢谢...

+0

你有源代码访问?或只是二进制文件? – 2010-12-01 09:05:10

+0

yap source code is ther ..但是改变代码的同时警报显示将会有很大的变化,因为它在很多地方都是如此。我正在寻找一种方法来重写异常类或东西,并发送一个友好的消息,而不是Obejct参考错误消息。 – 2010-12-01 09:11:49

回答

1

@Anz:它不擅长在代码中的每一处使用异常处理,因此请始终牢记这一点,并且您必须知道所有不同类型异常的含义。 在你的情况你得到“对象引用异常”,这异常的主要原因是,在访问变量一样

Exa_1你是不是检查空: -

的DataSet DS;

现在

如果我存取权限它作为ds.Table.count(),它会给异常,所以在这里我们应该使用

的DataSet DS;

If(ds!=null) 
{ 
    int val = ds.Table.count(); 
} 

Exa_2: - !

 string strVariable=txtInput.Text; 

    int number = Convert.Int32(strVariable); // here if txtInput.Text is empty them  it will through exception so here we can use 

如果(字符串。IsNullOrEmpty(strVariable)) int number = Convert.Int32(strVariable);

如果你想显示在异常处理自定义消息,那么你可以创建自己的异常类,这将覆盖异常类,那么你可以抛出,赶上这样的:

public class MyException : Exception 
{ 
    public string customMessage; 
    public MyException(string sourceName) 
    { 
     customMessage = sourceName + " can not be null"; 
    } 
    public MyException() 
    { 
     customMessage="ObjectReferenceException"; 
    }   
} 

而在代码你在哪里USNG尝试捕捉使用

 try 
     { 

      throw new MyException("check"); 
     } 
     catch (MyException ex) 
     { 
      MessageBox.Show(ex.customMessage); 
     } 
1

当你捕获异常并显示消息框,你只需要在消息框中写一个友好的消息。我不认为显示异常消息是一个好主意 - 它可以泄露恶意用户可能用来攻击应用程序的应用程序结构信息。

**附加**

无论哪种方式,这是一个很大的变化。您可以在很多地方重写该例外情况,或者在很多地方重写显示错误消息。我可以建议您将错误消息的显示合并到一个地方,因此当您需要新的错误消息时,您有一个地方可以去,因此将来有一个地方需要更改。

0

您需要捕获遗留应用程序抛出的异常,并在某些日志文件中记录该异常,并根据发生的异常显示适当的用户友好消息。

例如,您可以显示“应用程序无法找到文件xyz”,而不是显示FileNotFound异常消息以及堆栈跟踪,而不是显示。在Global.asax中

0

使用Application_Error事件如果是Asp.Net应用

Application_Error 

{ 
    HttpContext context = HttpContext.Current; 

    Exception ex = context.Server.GetLastError(); 
    //process your exception 

    if (context.IsCustomErrorEnabled) 
    { 
     context.Server.ClearError(); 
     context.Server.Transfer("~/error.aspx"); 
    } 
} 
1

在WinForms应用程序,你可以使用类似的技术用于显示用户友好的错误消息中描述here

这就是说,由于空引用异常的唯一原因是开发人员的错误,有一个强大的代码味道,该应用程序有很多的整体问题。我会建议至少在异常处理程序中放置一个记录器,以防止错误发生。

相关问题