【问题标题】:Users exit from vb.net application without any exception用户无任何异常退出 vb.net 应用程序
【发布时间】:2012-07-31 17:16:09
【问题描述】:

用户报告他们退出应用程序没有任何错误,我在事件查看器中有很多这样的错误:

EventType clr20r3, P1 main.exe, P2 1.0.0.0, P3 4f6b05ad, P4 系统绘图,P5 2.0.0.0,P6 4333aeaf,P7 17e,P8 20,P9 system.argumentexception,P10 无。

EventType clr20r3, P1 main.exe, P2 1.0.0.0, P3 4f6b05ad, P4 microsoft.visualbasic、P5 8.0.0.0、P6 4333d6d8、P7 5e、P8 1e1、P9 34ssps20bdj3nj0wmit5kamzhvglfzcc,P10 无。

EventType clr20r3, P1 main.exe, P2 1.0.0.0, P3 4f6b05ad, P4 microsoft.visualbasic、P5 8.0.0.0、P6 4333d6d8、P7 85、P8 a2、P9 system.componentmodel.win32,P10 无。

我们在 Windows Server 2003 上安装了终端服务器,像上面一样,我在一天内有大约 500 个错误。

有什么建议吗?

【问题讨论】:

    标签: vb.net event-viewer


    【解决方案1】:

    您似乎遇到了一些未处理的异常。如果 .NET 应用程序遇到 Try/Catch 块未捕获的异常并且没有调试器来显示它,则应用程序将终止。

    向您的应用程序添加一些异常处理和日志记录,以便您可以查看异常的所有详细信息。我建议在显示或记录异常对象时使用ToString 方法,因为这将显示异常及其所有内部异常的异常类型、消息和堆栈跟踪。获得这些信息后,应该更容易确定出了什么问题以及如何解决问题。

    要添加异常处理,如果您使用的是 VB 的应用程序框架,请转到项目属性页面的“应用程序”选项卡并单击“查看应用程序事件”按钮。在MyApplication类中,为UnhandledException事件添加事件处理器,如:

    Private Sub MyApplication_UnhandledException(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs) Handles Me.UnhandledException
        MyLog.WriteEntry(e.Exception.ToString())
    End Sub
    

    但是,如果您不使用应用程序框架,请转到应用程序的入口点 metion (Sub Main) 并在该方法中的所有代码周围放置一个 Try/Catch 块,例如:

    Public Sub Main
        Try
            ' ...
        Catch ex As Exception
            MyLog.WriteEntry(ex.ToString())
        End Try
    End Sub
    

    这些示例假设您有一个带有共享 WriteEntry 方法的 MyLog 类。显然,您需要在此类中实现自己的日志记录。

    【讨论】:

    • 如果它是用户模式应用程序,则应该有一个默认的顶级异常处理程序来显示错误。如果不是,请检查以确保您没有覆盖默认值并连接一个新的顶级异常处理程序来吞噬错误。但是,是的,实现日志记录永远不会有坏处……只是不要通过将 main 方法包装在 try/catch 块中来实现,而是使用未处理的异常挂钩,这就是它的用途。
    • @CodyGray “未处理的异常挂钩”,您指的是MyApplication.UnhandledException 事件吗?
    • 是的,就是这个。这是为了调试目的而记录错误的最佳方式。将所有内容包装在一个空的 catch 块中只是隐藏错误,并希望从任何和所有未知异常中恢复是不负责任的乐观。我在here 之前讨论过一次。
    • @CodyGray 我当然不是要给人留下它应该吃掉错误并继续下去的印象。我的意思是在允许应用程序关闭之前捕获并记录任何未处理的异常。我在 Sub Main 中提到 try/catch 的原因是,如果您不使用应用程序框架,MyApplication 类及其事件甚至都不存在。
    猜你喜欢
    • 2012-12-17
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多