Tôi đang cố gắng để bắt một ngoại lệ ném, nhưng nó không bong bóng lên đến nơi nó được gọi. Nó phá vỡ trong InsertNewUser
'khối catch s, nóiNgoại lệ không phải là bong bóng lên
'Một ngoại lệ của loại 'System.Exception' xảy ra ở PeakPOS.exe nhưng đã không được xử lý trong mã người dùng'
Nếu tôi bấm vào debugger Tiếp tục, nó đi đến một số tập tin gọi là App.g.i.cs
và phá vỡ trên một dòng tôi không hiểu nhưng có cái gì để làm với gỡ lỗi vào giờ nghỉ. Ứng dụng chấm dứt sau đó.
Tại sao điều này nói rằng ngoại lệ được giải quyết khi nó bị thu hồi và sau đó bị bắt lại và xử lý (để được xử lý)?
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
Bạn đã thử bỏ chọn hộp kiểm có ghi 'Break khi ngoại lệ này xảy ra' và chạy lại không? Tôi nghĩ rằng trong khi ở chế độ gỡ lỗi nó phá vỡ tại trường hợp ngoại lệ –
@Saagar: Có. Điều gì xảy ra là nó đi vào tập tin App.g.i.cs và phá vỡ trên câu lệnh if giống như trước đây, nó chỉ không phá vỡ trong đánh bắt nữa. Tôi tự hỏi liệu tôi có hiểu lầm hay không. Bắt một ngoại lệ không xử lý nó? – ShrimpCrackers