【问题标题】:How to print the exception in Windows Phone?如何在 Windows Phone 中打印异常?
【发布时间】:2013-02-24 19:42:48
【问题描述】:

我正在尝试为 windows phone 8 编写应用程序。如果有任何异常,我想将异常打印到屏幕上。所以这就是我正在做的事情:

try
            {
               //The code which I want to handle for exception
            }
            catch (Exception e)
            {
                ErrorStatus.Text = e.Message + "\n\n" + e.Source + "\n\n" + e.StackTrace;
            }

ErrorStatus 是我的文本块。 但是,我的 catch 块中唯一的一行是在运行时给我一个异常。例外是:

A first chance exception of type 'System.UnauthorizedAccessException' occurred in System.Windows.ni.dll An exception of type 'System.UnauthorizedAccessException' occurred in System.Windows.ni.dll and wasn't handled before a managed/native boundary

我在语法上做错了吗?我是 C# 编程和 Windows Phone 编程的新手。

编辑:

异常的更多细节:

System.UnauthorizedAccessException was unhandled by user code
HResult=-2147024891
Message=Invalid cross-thread access.
Source=System.Windows
InnerException: 

【问题讨论】:

  • 你是在你的开发机器上本地执行这段代码吗?
  • 是的。我在我的模拟器上本地执行此代码。
  • 这只是在 Visual Studio 中创建的一个基本的 Windows Phone 应用吗?
  • “基本”是什么意思?
  • 抱歉,到目前为止,您采取了哪些步骤来创建 Windows Phone 8 应用程序?

标签: c# windows-phone-8


【解决方案1】:

您需要显示来自 UI 线程的消息:网络调用始终在后台工作线程上回调。因此,您需要调用 Dispatcher 以使其在 UI 线程上运行。

您也可以只使用Exception.ToString() 将消息内容显示为字符串。这样做的好处是还可以在您正在处理的异常中显示任何嵌套异常。

作为临时措施尝试:

catch (Exception e)
{
    Deployment.Current.Dispatcher.BeginInvoke(() =>
    {
        ErrorStatus.Text = e.ToString();
    }
}

您应该更永久地修复问题或将其记录到文件中,这样您就不会捕获掩盖代码中错误的异常。

【讨论】:

    【解决方案2】:

    这是打印异常消息的最佳方式,以便您知道问题出在哪里:

    try{}
    catch(Exception ex)
    {
        await new MessageDialog("Error message:\n\n" + ex.message).ShowAsync();
    }
    

    【讨论】:

      猜你喜欢
      • 2010-12-01
      • 2017-12-21
      • 2017-05-26
      • 2016-01-19
      • 1970-01-01
      • 2013-12-16
      • 2012-03-06
      • 1970-01-01
      相关资源
      最近更新 更多