Better exception handling for pre-loading

This commit is contained in:
AlexVallat 2013-08-10 19:49:59 +01:00
parent b9aad79b62
commit 8a193f5216
2 changed files with 21 additions and 6 deletions

View File

@ -17,6 +17,7 @@ This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll. This file
using System;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using KeePassLib.Serialization;
@ -55,11 +56,25 @@ namespace keepass2android
Kp2aLog.Log("KeyFileException");
Finish(false, /*TODO Localize: use Keepass error text KPRes.KeyFileError (including "or invalid format")*/ _app.GetResourceString(UiStringKey.keyfile_does_not_exist));
}
catch (Exception e) {
catch (AggregateException e)
{
string message = e.Message;
foreach (var innerException in e.InnerExceptions)
{
message = innerException.Message; // Override the message shown with the last (hopefully most recent) inner exception
Kp2aLog.Log("Exception: " + message);
}
Finish(false, "An error occured: " + message);
return;
}
catch (Exception e)
{
Kp2aLog.Log("Exception: " + e.Message);
Finish(false, "An error occured: " + e.Message);
return;
}
}
/* catch (InvalidPasswordException e) {
finish(false, Ctx.GetString(Resource.String.InvalidPassword));
return;

View File

@ -59,7 +59,7 @@ namespace keepass2android
private bool _rememberKeyfile;
ISharedPreferences _prefs;
private bool _started;
private bool _starting;
public PasswordActivity (IntPtr javaReference, JniHandleOwnership transfer)
: base(javaReference, transfer)
@ -368,7 +368,7 @@ namespace keepass2android
protected override void OnStart()
{
base.OnStart();
_started = true;
_starting = true;
}
private MemoryStream LoadDbFile()
@ -409,9 +409,9 @@ namespace keepass2android
// OnResume is run every time the activity comes to the foreground. This code should only run when the activity is started (OnStart), but must
// be run in OnResume rather than OnStart so that it always occurrs after OnActivityResult (when re-creating a killed activity, OnStart occurs before OnActivityResult)
if (_started)
if (_starting)
{
_started = false;
_starting = false;
if (App.Kp2a.DatabaseIsUnlocked)
{
LaunchNextActivity();