Я пытаюсь поймать брошенное Исключение, но оно не пузырится до того места, где оно было вызвано. Он ломает в InsertNewUser
«поймать блока, заявив, чтоИсключение не пузырится вверх
„Исключение типа „System.Exception“ произошло в PeakPOS.exe, но не был обработан в пользовательском коде“
Если я нажимаю на отладчик Продолжайте, он переходит к некоторому файлу с именем App.g.i.cs
и разбивается на строку, которую я не понимаю, но имеет какое-то отношение к отладке при разрыве. После этого приложение прекращается.
Почему это говорит о том, что исключение необработанно, когда оно вновь отвергается, а затем повторно поймано и обрабатывается (подлежит обработке)?
AccessViewModel.cs
public void SaveNewUser(Popup popup)
{
UserAccounts.Add(TempUser);
string salt = PeakCrypto.GenerateSalt();
string hash = PeakCrypto.GenerateHashedPassword(Password + salt);
try
{
PeakDB.InsertNewUser(TempUser, salt, hash);
}
catch (Exception e)
{
//TODO notify user that new account could not be saved
}
CreateNewAccount();
if (popup != null)
popup.IsOpen = false;
}
PeakDB.cs
public static async void InsertNewUser(UserAccount user, String salt, String hash)
{
var db = await DatabaseHelper.GetDatabaseAsync();
try
{
using (var userStatement = await db.PrepareStatementAsync(
"INSERT INTO AccessAccounts (FirstName, LastName, Salt, Hash) VALUES(@first, @last, @salt, @hash)"))
{
userStatement.BindTextParameterWithName("@first", user.FirstName);
userStatement.BindTextParameterWithName("@last", user.LastName);
userStatement.BindTextParameterWithName("@salt", salt);
userStatement.BindTextParameterWithName("@hash", hash);
await userStatement.StepAsync();
}
}
catch(Exception e)
{
// TODO: log the exception error
throw;
}
}
App.g.i.cs
#if DEBUG && !DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
UnhandledException += (sender, e) =>
{
if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break();
};
#endif
Вы попытались снять флажок с надписью «Перерыв, когда это исключение», и запустить снова? Я думаю, что в режиме отладки он прерывается при исключении –
@Saagar: Да. Случается, что он идет в файл App.g.i.cs и разбивается на оператор if так же, как и раньше, он больше не ломается в catch. Интересно, не ошибаюсь ли я/пытаюсь поймать. Ловит ли исключение, не обращаясь с ним? – ShrimpCrackers