From 15207788f849d1583773415325bd98d7ef4e15bd Mon Sep 17 00:00:00 2001 From: levBagryansky <28lev11@gmail.com> Date: Mon, 15 Jan 2024 13:46:32 +0300 Subject: [PATCH] #2772: safeMessage --- .../src/main/java/EOorg/EOeolang/EOerror.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/eo-runtime/src/main/java/EOorg/EOeolang/EOerror.java b/eo-runtime/src/main/java/EOorg/EOeolang/EOerror.java index 75f3d7ead4..001711240d 100644 --- a/eo-runtime/src/main/java/EOorg/EOeolang/EOerror.java +++ b/eo-runtime/src/main/java/EOorg/EOeolang/EOerror.java @@ -116,7 +116,7 @@ public static final class ExError extends ExAbstract { * @param enclosure Enclosure inside the error */ public ExError(final Phi enclosure) { - super(new PhContainingUTF8(enclosure).toString()); + super(EOerror.ExError.safeMessage(enclosure)); this.enc = enclosure; } @@ -127,5 +127,29 @@ public ExError(final Phi enclosure) { public Phi enclosure() { return this.enc; } + + /** + * Retrieve message from enclosure safely. + * @param enclosure Enclosure. + * @return String message. + * @checkstyle IllegalCatchCheck (20 lines) + */ + private static String safeMessage(final Phi enclosure) { + String result; + if (enclosure == null) { + result = "null Phi"; + } else { + try { + result = new PhContainingUTF8(enclosure).toString(); + } catch (final Throwable first) { + try { + result = enclosure.toString(); + } catch (final Throwable second) { + result = enclosure.getClass().toString(); + } + } + } + return result; + } } }