Windows Phone 7 UI 異常處理
慢慢開始 Windows Phone 7 編程的學(xué)習(xí),工作是比較忙與累,但是還是想學(xué)習(xí)一下 Windows Phone 7 編程和 Windows 8 編程。
計(jì)劃:一步步來吧,先培訓(xùn)興趣,再回過頭來好好看看 C# 語言。
今天先看了一下 UI 的異常處理的實(shí)現(xiàn):新建一 Silverlight for Windows Phone 7/Windows Phone Application 工程。
在工程中增加一個頁面,例如: Page1.xaml,然后在頁面中增加一個文本框。示例代碼如下:
namespace?WindowsPhoneApplicationHello { ????public?partial?class?Page1?:?PhoneApplicationPage ????{ ????????public?static?Exception?ExceptionInfo; ????????public?Page1() ????????{ ????????????InitializeComponent(); ????????} ???????? ????????protected?override?void?OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs?e) ????????{ ????????????ExceptionText.Text?=?ExceptionInfo.ToString(); ????????} ????} }
在源文件?App.xaml.cs 中,自動生成的代碼中有兩個用于處理錯誤和異常的函數(shù),分別是:
(1)?RootFrame_NavigationFailed: 處理導(dǎo)航失敗
(2)?Application_UnhandledException: 處理應(yīng)用程序所有未處理的
修改?RootFrame_NavigationFailed 函數(shù),增加兩行代碼。修改后的代碼如下:
private?void?RootFrame_NavigationFailed(object?sender,?NavigationFailedEventArgs?e) { ?????if?(System.Diagnostics.Debugger.IsAttached) ?????{ ??????????//?A?navigation?has?failed;?break?into?the?debugger ??????????System.Diagnostics.Debugger.Break(); ??????} ??????e.Handled?=?true; ??????Page1.ExceptionInfo?=?e.Exception; ??????(RootVisual?as?Microsoft.Phone.Controls.PhoneApplicationFrame).Source?=?new?Uri("/Page1.xaml",?UriKind.Relative); }
為了測試代碼,故意拋出一個異常。增加一個按鍵,在按鍵的處理中加入以下的代碼:
private?void?button2_Click(object?sender,?RoutedEventArgs?e) { ?????NavigationService.Navigate(new?Uri("NoExist.html",UriKind.Relative)); }
運(yùn)行結(jié)果:當(dāng)用戶點(diǎn)擊按鍵后,在 Page1 頁面顯示出 error 信息。
但此信息對一般用于來說,是不友好的,需要進(jìn)一步的處理才能滿足真正產(chǎn)品的求。