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;
using System.IO; using System.IO;
using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using KeePassLib.Serialization; using KeePassLib.Serialization;
@@ -55,11 +56,25 @@ namespace keepass2android
Kp2aLog.Log("KeyFileException"); Kp2aLog.Log("KeyFileException");
Finish(false, /*TODO Localize: use Keepass error text KPRes.KeyFileError (including "or invalid format")*/ _app.GetResourceString(UiStringKey.keyfile_does_not_exist)); 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); Kp2aLog.Log("Exception: " + e.Message);
Finish(false, "An error occured: " + e.Message); Finish(false, "An error occured: " + e.Message);
return; return;
} }
/* catch (InvalidPasswordException e) { /* catch (InvalidPasswordException e) {
finish(false, Ctx.GetString(Resource.String.InvalidPassword)); finish(false, Ctx.GetString(Resource.String.InvalidPassword));
return; return;

View File

@@ -59,7 +59,7 @@ namespace keepass2android
private bool _rememberKeyfile; private bool _rememberKeyfile;
ISharedPreferences _prefs; ISharedPreferences _prefs;
private bool _started; private bool _starting;
public PasswordActivity (IntPtr javaReference, JniHandleOwnership transfer) public PasswordActivity (IntPtr javaReference, JniHandleOwnership transfer)
: base(javaReference, transfer) : base(javaReference, transfer)
@@ -368,7 +368,7 @@ namespace keepass2android
protected override void OnStart() protected override void OnStart()
{ {
base.OnStart(); base.OnStart();
_started = true; _starting = true;
} }
private MemoryStream LoadDbFile() 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 // 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) // 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) if (App.Kp2a.DatabaseIsUnlocked)
{ {
LaunchNextActivity(); LaunchNextActivity();