簡體   English   中英

如何在Windows Phone中打印異常?

[英]How to print the exception in Windows Phone?

我正在嘗試為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是我的TextBlock。 但是,我的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: 

您需要從UI線程顯示您的消息:Web調用始終在后台工作線程上回調。 因此,您需要調用Dispatcher以使其在UI線程上運行。

您也可以使用Exception.ToString()將消息內容顯示為字符串。 這樣做的好處是還可以在您正在處理的異常中顯示任何嵌套異常。

作為臨時措施嘗試:

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

更永久地,您應該修復問題或將其記錄到文件中,這樣您就不會捕獲掩蓋代碼中的錯誤的異常。

這是打印出異常消息的最佳方式,以便您可以知道問題所在:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM