c#、Visual Studio 2013、Windowsストアアプリを使用
少し長い説明
JSONで保存されたデータを処理する簡単なWindowsストアアプリを作成します。データ量を増やした後、メッセージUnhandled win32 exception occured in AppName [procId].
が表示され始めます-下の写真を参照してください:
JSONファイルに保存されるデータの量を減らしようとしましたが、デバッグ中に作業をしばらく休んだ後、このメッセージが再び表示されました。したがって、状況-データが多い場合-アプリで実行できる操作はほとんどなく(5を意味することはほとんどありません)、この例外が発生します。データの最小量がある場合は、アプリでもう少し作業できます(平均12〜17操作)。操作手段-ファイルからの読み取り、保存、ページのロードなど。
私はグーグルを少しして、考えられる原因をいくつか見つけました:
次の手順に従って、PCでDEPをセットアップする必要があります:
試してみてください-役に立たない
試してみてください-役に立たない
試してみてください-役に立たない
次に見つかりました:
で未処理のwin32例外が発生しました。この例外のジャストインタイムデバッグは、次のエラーで失敗しました。ログインしたユーザーには、クラッシュしたアプリケーションをデバッグするためのアクセス権がありませんでした。このメッセージは、適切なアクセス許可がないため、ジャストインタイムデバッグが失敗したことを示しています。
つまり、適切なアクセス許可がないということです。
管理者権限でアプリを起動してみてください:
試してみてください-役に立たない
見つかった this など this MSDN 投稿は役に立ちました。アプリにコードを追加してみてください。
public MainPage()
{
this.InitializeComponent();
this.navigationHelper = new NavigationHelper(this);
this.navigationHelper.LoadState += navigationHelper_LoadState;
this.navigationHelper.SaveState += navigationHelper_SaveState;
TimeBinding();
Application.Current.UnhandledException += new UnhandledExceptionEventHandler(MyHandler);
}
static void MyHandler(object sender, UnhandledExceptionEventArgs args)
{
string e = args.Message.ToString();
}
しかし、何もキャッチされませんでした...
だから、試してみてください-助けにはなりません
質問:
"Unhandled win32 exception occured in AppName [procId]."
のような例外の根本原因である可能性がありますか?UnhandledException
の使い方を正しく理解していますか?たぶん私はそれが間違っているので、必要な例外をキャッチできません(私は.NETのために勉強しているだけです)?数ヶ月前、私は実際にこの仕事のために エラー制御システム を設計しました。このプロジェクトでは、このメインコードを使用して、win32アプリケーションの例外をキャッチしました。
System.Windows.Forms.Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
// Catch all handled exceptions in managed code, before the runtime searches the Call Stack
AppDomain.CurrentDomain.FirstChanceException += FirstChanceException;
// Catch all unhandled exceptions in all threads.
AppDomain.CurrentDomain.UnhandledException += UnhandledException;
// Catch all unobserved task exceptions.
TaskScheduler.UnobservedTaskException += UnobservedTaskException;
// Catch all unhandled exceptions.
System.Windows.Forms.Application.ThreadException += ThreadException;
// Catch all WPF unhandled exceptions.
Dispatcher.CurrentDispatcher.UnhandledException += DispatcherUnhandledException;
そしてリスナーメソッド:
/// <summary>
/// Used for handling WPF exceptions bound to the UI thread.
/// Handles the <see cref="System.Windows.Threading.DispatcherUnhandledExceptionEventHandler"/> events.
/// </summary>
[HandleProcessCorruptedStateExceptions]
private static DispatcherUnhandledExceptionEventHandler DispatcherUnhandledException
{
// catch error ...
}
/// <summary>
/// Used for handling WinForms exceptions bound to the UI thread.
/// Handles the <see cref="System.Threading.ThreadExceptionEventHandler"/> events in <see cref="System.Windows.Forms.Application"/> namespace.
/// </summary>
[HandleProcessCorruptedStateExceptions]
private static ThreadExceptionEventHandler ThreadException
{
// catch error ...
}
/// <summary>
/// Used for handling general exceptions bound to the main thread.
/// Handles the <see cref="AppDomain.UnhandledException"/> events in <see cref="System"/> namespace.
/// </summary>
[HandleProcessCorruptedStateExceptions]
private static UnhandledExceptionEventHandler UnhandledException
{
// catch error ...
}
/// <summary>
/// Used for handling System.Threading.Tasks bound to a background worker thread.
/// Handles the <see cref="UnobservedTaskException"/> event in <see cref="System.Threading.Tasks"/> namespace.
/// </summary>
[HandleProcessCorruptedStateExceptions]
private static EventHandler<UnobservedTaskExceptionEventArgs> UnobservedTaskException
{
// catch error ...
}
/// <summary>
/// This is new to .Net 4 and is extremely useful for ensuring that you ALWAYS log SOMETHING.
/// Whenever any kind of exception is fired in your application, a FirstChangeExcetpion is raised,
/// even if the exception was within a Try/Catch block and safely handled.
/// This is GREAT for logging every wart and boil, but can often result in too much spam,
/// if your application has a lot of expected/handled exceptions.
/// </summary>
[HandleProcessCorruptedStateExceptions]
private static EventHandler<FirstChanceExceptionEventArgs> FirstChanceException
{
// catch error ...
}
コード内で例外をスローする場合は、このイベントで必ずキャッチする必要がありますが、アプリケーションを実行する前に例外が発生した場合、このイベントは表示または実行するために発生しません。
たとえば、すべての参照アセンブリがプロジェクトに正確に追加されていない場合、アプリケーションの起動時に例外がスローされます。
また、thread
またはtask
sから発生したため、別の例外にはinnerExceptionが含まれる場合があります。したがって、すべてをチェックする必要がありますexception.innerException
。
私はあなたの問題の解決策を提示したいと思っています。