File tree Expand file tree Collapse file tree 1 file changed +17
-6
lines changed
src/main/java/org/scijava/script Expand file tree Collapse file tree 1 file changed +17
-6
lines changed Original file line number Diff line number Diff line change 3232package org .scijava .script ;
3333
3434import java .io .FileReader ;
35+ import java .io .PrintWriter ;
3536import java .io .Reader ;
3637import java .io .Writer ;
3738
@@ -146,7 +147,13 @@ public void run() {
146147 engine .put (ScriptEngine .FILENAME , path );
147148 final ScriptContext scriptContext = engine .getContext ();
148149 if (output != null ) scriptContext .setWriter (output );
149- if (error != null ) scriptContext .setErrorWriter (error );
150+ final PrintWriter errorPrinter ;
151+ if (error != null ) {
152+ scriptContext .setErrorWriter (error );
153+ errorPrinter = new PrintWriter (error );
154+ } else {
155+ errorPrinter = null ;
156+ }
150157
151158 // populate bindings with the input values
152159 for (final ModuleItem <?> item : getInfo ().inputs ()) {
@@ -164,11 +171,15 @@ public void run() {
164171 setOutput (RETURN_VALUE , language .decode (returnValue ));
165172 setResolved (RETURN_VALUE , true );
166173 }
167- catch (final ScriptException e ) {
168- log .error (e .getCause ());
169- }
170- catch (final Throwable e ) {
171- log .error (e );
174+ catch (Throwable e ) {
175+ while (e instanceof ScriptException && e .getCause () != null ) {
176+ e = e .getCause ();
177+ }
178+ if (error == null ) {
179+ log .error (e );
180+ } else {
181+ e .printStackTrace (errorPrinter );
182+ }
172183 }
173184
174185 // populate output values
You can’t perform that action at this time.
0 commit comments