diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 0751a29cbb..98187dc9dc 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -3272,7 +3272,7 @@ class Core { } while (count > 0); } - private static void onRule(Context context, JSONArray jargs, EntityMessage message) throws JSONException, MessagingException, IOException { + private static void onRule(Context context, JSONArray jargs, EntityMessage message) throws Throwable { // Deferred rule (download headers, body, etc) DB db = DB.getInstance(context); diff --git a/app/src/main/java/eu/faircode/email/EntityRule.java b/app/src/main/java/eu/faircode/email/EntityRule.java index c2dc13229e..2ccf1f17fe 100644 --- a/app/src/main/java/eu/faircode/email/EntityRule.java +++ b/app/src/main/java/eu/faircode/email/EntityRule.java @@ -218,25 +218,28 @@ public class EntityRule { static int run(Context context, List rules, EntityMessage message, boolean browsed, List
headers, String html) - throws JSONException, MessagingException, IOException { + throws Throwable { int applied = 0; List stopped = new ArrayList<>(); - for (EntityRule rule : rules) { - if (rule.group != null && stopped.contains(rule.group)) - continue; - if (rule.matches(context, message, headers, html)) { - if (rule.execute(context, message, browsed, html)) - applied++; - if (rule.stop) - if (rule.group == null) - break; - else { - if (!stopped.contains(rule.group)) - stopped.add(rule.group); - } + for (EntityRule rule : rules) + try { + if (rule.group != null && stopped.contains(rule.group)) + continue; + if (rule.matches(context, message, headers, html)) { + if (rule.execute(context, message, browsed, html)) + applied++; + if (rule.stop) + if (rule.group == null) + break; + else { + if (!stopped.contains(rule.group)) + stopped.add(rule.group); + } + } + } catch (Throwable ex) { + throw new Throwable(rule.name, ex); } - } return applied; } diff --git a/app/src/main/java/eu/faircode/email/FragmentFolders.java b/app/src/main/java/eu/faircode/email/FragmentFolders.java index 3cb2a9e1ca..304b33530b 100644 --- a/app/src/main/java/eu/faircode/email/FragmentFolders.java +++ b/app/src/main/java/eu/faircode/email/FragmentFolders.java @@ -1201,7 +1201,7 @@ public class FragmentFolders extends FragmentBase { } @Override - protected Integer onExecute(Context context, Bundle args) throws JSONException, MessagingException, IOException { + protected Integer onExecute(Context context, Bundle args) throws Throwable { long fid = args.getLong("id"); DB db = DB.getInstance(context); diff --git a/app/src/main/java/eu/faircode/email/ServiceExternal.java b/app/src/main/java/eu/faircode/email/ServiceExternal.java index 65a9afbafa..c161aaa608 100644 --- a/app/src/main/java/eu/faircode/email/ServiceExternal.java +++ b/app/src/main/java/eu/faircode/email/ServiceExternal.java @@ -249,7 +249,7 @@ public class ServiceExternal extends ServiceBase { ServiceSynchronize.eval(context, "external account=" + accountName + " enabled=" + enabled); } - private static void rule(Context context, Intent intent) throws IOException, JSONException, MessagingException { + private static void rule(Context context, Intent intent) throws Throwable { String accountName = intent.getStringExtra("account"); String ruleName = intent.getStringExtra("rule");