From e8c2f57913042c6ceeeeac010e2c6658fcb3c147 Mon Sep 17 00:00:00 2001 From: Alexander Kriegisch Date: Wed, 18 Jan 2023 09:17:43 +0100 Subject: Further streamline BCException - Improvement: Also add CompilationAndWeavingContext for constructor with causing exception - Remove home-brew stack trace printing, just call super constructors Signed-off-by: Alexander Kriegisch --- .../main/java/org/aspectj/weaver/BCException.java | 46 +++------------------- 1 file changed, 6 insertions(+), 40 deletions(-) (limited to 'org.aspectj.matcher') diff --git a/org.aspectj.matcher/src/main/java/org/aspectj/weaver/BCException.java b/org.aspectj.matcher/src/main/java/org/aspectj/weaver/BCException.java index 44c7aa8fa..da887fff5 100644 --- a/org.aspectj.matcher/src/main/java/org/aspectj/weaver/BCException.java +++ b/org.aspectj.matcher/src/main/java/org/aspectj/weaver/BCException.java @@ -12,55 +12,21 @@ package org.aspectj.weaver; -import java.io.PrintStream; -import java.io.PrintWriter; - import org.aspectj.bridge.context.CompilationAndWeavingContext; /** * Exception to use inside the bcweaver. */ -@SuppressWarnings("serial") public class BCException extends RuntimeException { - Throwable thrown; - public BCException() { - super(); - } + super(); + } - public BCException(String s) { - super(s + "\n" + CompilationAndWeavingContext.getCurrentContext()); + public BCException(String message) { + super(message + CompilationAndWeavingContext.getCurrentContext(true)); } - public BCException(String s, Throwable thrown) { - this(s); - this.thrown = thrown; - } - - // TODO: Is it really necessary to re-invent stack trace printing here? Can these methods simply go away? - // The only doubtful "benefit" is that the causing exception's stack trace is printed fully instead of shortened. - // But OTOH, the JVM just omits the lines which were present in the original stack trace above already, so there is - // really no extra information here. - - public void printStackTrace() { - printStackTrace(System.err); + public BCException(String message, Throwable cause) { + super(message + CompilationAndWeavingContext.getCurrentContext(true), cause); } - - public void printStackTrace(PrintStream s) { - printStackTrace(new PrintWriter(s)); - } - - public void printStackTrace(PrintWriter s) { - super.printStackTrace(s); - if (null != thrown) { - s.print("Caused by: "); - thrown.printStackTrace(s); - } - // Flush PrintWriter in case the JVM exits before the stack trace was printed. Otherwise, when e.g. calling - // UnresolvedType.signatureToName from a main method or a test directly and a BCException is thrown, nothing but - // Exception in thread "main" - // would be printed without flushing the PrintWriter, because the JVM exits immediately. - s.flush(); - } - } -- cgit v1.2.3