Windows Phone SDKのテンプレートを使ってWindows Phoneアプリを作成すると、エラーハンドリングしていないつまりTry~Catchしていない部分の実行時エラーはスタックトレース付のダイアログボックスが自動的に表示されます。
これはテンプレートによりApp.xaml.vbに次のようなコードが自動生成されているからです。
Public Sub Application_UnhandledException(ByVal sender As Object,
ByVal e As ApplicationUnhandledExceptionEventArgs) _
Handles Me.UnhandledException
' デバッグ中にグラフィックスのプロファイル情報を表示します。
If Diagnostics.Debugger.IsAttached Then
Diagnostics.Debugger.Break()
Else
e.Handled = True
MessageBox.Show(e.ExceptionObject.Message &
Environment.NewLine &
e.ExceptionObject.StackTrace,
"Error", MessageBoxButton.OK)
End If
End Sub
しかし、ここで問題があります。
スタックトレース付のメッセージはデバッグ時には便利ですが、利用者にとっては意味の分からないメッセージになるので、普通に想定される状況でこのままの形式でメッセージが表示されるとmarketplaceの審査でリジェクトされてしまいます。
実行時エラーが想定されるところではTry~Catchでエラーハンドリングするという方法もあると思いますが、ここのMessageBoxの場所でエラー判定して適切なメッセージを表示するように作ってあげれば、エラーの一元管理が出来上がります。
また、Diagnostics.Debugger.IsAttachedの時に実行が終了してしまうのですが、これは、e.HandledにTrueを代入する事で防げますし、デバッグ実行時のも継続実行となるので実動作に近い動きが実現できます。