Skip to content

Commit 64c3914

Browse files
committed
Only call #message inside the catch to get an exception message
1 parent ea0c2b3 commit 64c3914

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

src/main/java/org/truffleruby/core/exception/ExceptionOperations.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -89,17 +89,18 @@ private static String messageFieldToString(RubyException exception) {
8989

9090
@TruffleBoundary
9191
public static String messageToString(RubyException exception) {
92+
Object messageObject = null;
9293
try {
93-
final Object messageObject = RubyContext.send(exception, "message");
94-
95-
final RubyStringLibrary libString = RubyStringLibrary.getUncached();
96-
if (libString.isRubyString(messageObject)) {
97-
return libString.getJavaString(messageObject);
98-
}
94+
messageObject = RubyContext.send(exception, "message");
9995
} catch (Throwable e) {
10096
// Fall back to the internal message field
10197
}
102-
return messageFieldToString(exception);
98+
final RubyStringLibrary libString = RubyStringLibrary.getUncached();
99+
if (messageObject != null && libString.isRubyString(messageObject)) {
100+
return libString.getJavaString(messageObject);
101+
} else {
102+
return messageFieldToString(exception);
103+
}
103104
}
104105

105106
public static RubyException createRubyException(RubyContext context, RubyClass rubyClass, Object message,

0 commit comments

Comments
 (0)