I'm testing the kettle-sdk-embedding-samples with a simple transformation containing a "data validator" and a "User defined Java expression" step.
One of the tests consists of treating junk data to verify error handling. Depending of the data, errors occur in one of the two steps. I expected an exception to be raised and catched is the main calling java function here but actually it is not. An exception is raised and catched somewhere under the hood and the stack trace logged (see bellow an example). The application's catch code is never reached.
Is this designed on purpose? Is there any way to configure the engine to throw exceptions to the application for custom error handling? If not where is done in engine's code? I havent' been able to see where it's done to see if there is a way to deal with it
Thank you
[2023/11/27 15:43:00 - User defined Java expression.0 - ERROR (version 9.4.0.1-467, build 0.0 from 2023-03-30 03.02.48 by buildguy) : Unexpected error
\[2m2023-11-27T15:43:00.670+01:00\[0;39m \[31mERROR\[0;39m \[35m30800\[0;39m \[2m---\[0;39m \[2m\[Java expression\]\[0;39m \[36morg.pentaho.di.trans.Trans \[0;39m \[2m:\[0;39m \[etl/Chargement.ktr\] Unexpected error
2023/11/27 15:43:00 - User defined Java expression.0 - ERROR (version 9.4.0.1-467, build 0.0 from 2023-03-30 03.02.48 by buildguy) : org.pentaho.di.core.exception.KettleException:
2023/11/27 15:43:00 - User defined Java expression.0 - org.pentaho.di.core.exception.KettleValueException:
2023/11/27 15:43:00 - User defined Java expression.0 - java.lang.reflect.InvocationTargetException
2023/11/27 15:43:00 - User defined Java expression.0 - at java.lang.Thread.run (Thread.java:833)
2023/11/27 15:43:00 - User defined Java expression.0 - at org.pentaho.di.trans.step.RunThread.run (RunThread.java:62)
2023/11/27 15:43:00 - User defined Java expression.0 - at org.pentaho.di.trans.steps.janino.Janino.processRow (Janino.java:104)
2023/11/27 15:43:00 - User defined Java expression.0 - at org.pentaho.di.trans.steps.janino.Janino.calcFields (Janino.java:191)
2023/11/27 15:43:00 - User defined Java expression.0 - at org.codehaus.janino.ExpressionEvaluator.evaluate (ExpressionEvaluator.java:533)
2023/11/27 15:43:00 - User defined Java expression.0 - at org.codehaus.janino.ExpressionEvaluator.evaluate (ExpressionEvaluator.java:541)
2023/11/27 15:43:00 - User defined Java expression.0 - at java.lang.reflect.Method.invoke (Method.java:568)
2023/11/27 15:43:00 - User defined Java expression.0 - at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
2023/11/27 15:43:00 - User defined Java expression.0 - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
2023/11/27 15:43:00 - User defined Java expression.0 - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (NativeMethodAccessorImpl.java:-2)
2023/11/27 15:43:00 - User defined Java expression.0 -
2023/11/27 15:43:00 - User defined Java expression.0 -
2023/11/27 15:43:00 - User defined Java expression.0 - java.lang.reflect.InvocationTargetException
2023/11/27 15:43:00 - User defined Java expression.0 - at java.lang.Thread.run (Thread.java:833)
2023/11/27 15:43:00 - User defined Java expression.0 - at org.pentaho.di.trans.step.RunThread.run (RunThread.java:62)
2023/11/27 15:43:00 - User defined Java expression.0 - at org.pentaho.di.trans.steps.janino.Janino.processRow (Janino.java:104)
2023/11/27 15:43:00 - User defined Java expression.0 - at org.pentaho.di.trans.steps.janino.Janino.calcFields (Janino.java:191)
2023/11/27 15:43:00 - User defined Java expression.0 - at org.codehaus.janino.ExpressionEvaluator.evaluate (ExpressionEvaluator.java:533)
2023/11/27 15:43:00 - User defined Java expression.0 - at org.codehaus.janino.ExpressionEvaluator.evaluate (ExpressionEvaluator.java:541)
2023/11/27 15:43:00 - User defined Java expression.0 - at java.lang.reflect.Method.invoke (Method.java:568)
2023/11/27 15:43:00 - User defined Java expression.0 - at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
2023/11/27 15:43:00 - User defined Java expression.0 - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
2023/11/27 15:43:00 - User defined Java expression.0 - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (NativeMethodAccessorImpl.java:-2)
2023/11/27 15:43:00 - User defined Java expression.0 -
2023/11/27 15:43:00 - User defined Java expression.0 -
2023/11/27 15:43:00 - User defined Java expression.0 - at org.pentaho.di.trans.steps.janino.Janino.processRow(Janino.java:113)
2023/11/27 15:43:00 - User defined Java expression.0 - at org.pentaho.di.trans.step.RunThread.run(RunThread.java:62)
2023/11/27 15:43:00 - User defined Java expression.0 - at java.base/java.lang.Thread.run(Thread.java:833)
2023/11/27 15:43:00 - User defined Java expression.0 - Caused by: org.pentaho.di.core.exception.KettleValueException:
2023/11/27 15:43:00 - User defined Java expression.0 - java.lang.reflect.InvocationTargetException
2023/11/27 15:43:00 - User defined Java expression.0 - at java.lang.Thread.run (Thread.java:833)
2023/11/27 15:43:00 - User defined Java expression.0 - at org.pentaho.di.trans.step.RunThread.run (RunThread.java:62)
2023/11/27 15:43:00 - User defined Java expression.0 - at org.pentaho.di.trans.steps.janino.Janino.processRow (Janino.java:104)
2023/11/27 15:43:00 - User defined Java expression.0 - at org.pentaho.di.trans.steps.janino.Janino.calcFields (Janino.java:191)
2023/11/27 15:43:00 - User defined Java expression.0 - at org.codehaus.janino.ExpressionEvaluator.evaluate (ExpressionEvaluator.java:533)
2023/11/27 15:43:00 - User defined Java expression.0 - at org.codehaus.janino.ExpressionEvaluator.evaluate (ExpressionEvaluator.java:541)
2023/11/27 15:43:00 - User defined Java expression.0 - at java.lang.reflect.Method.invoke (Method.java:568)
2023/11/27 15:43:00 - User defined Java expression.0 - at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
2023/11/27 15:43:00 - User defined Java expression.0 - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
2023/11/27 15:43:00 - User defined Java expression.0 - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (NativeMethodAccessorImpl.java:-2)
2023/11/27 15:43:00 - User defined Java expression.0 -
2023/11/27 15:43:00 - User defined Java expression.0 - at org.pentaho.di.trans.steps.janino.Janino.calcFields(Janino.java:220)
2023/11/27 15:43:00 - User defined Java expression.0 - at org.pentaho.di.trans.steps.janino.Janino.processRow(Janino.java:104)
2023/11/27 15:43:00 - User defined Java expression.0 - ... 2 more
2023/11/27 15:43:00 - User defined Java expression.0 - Caused by: java.lang.reflect.InvocationTargetException
2023/11/27 15:43:00 - User defined Java expression.0 - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2023/11/27 15:43:00 - User defined Java expression.0 - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
2023/11/27 15:43:00 - User defined Java expression.0 - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2023/11/27 15:43:00 - User defined Java expression.0 - at java.base/java.lang.reflect.Method.invoke(Method.java:568)
2023/11/27 15:43:00 - User defined Java expression.0 - at org.codehaus.janino.ExpressionEvaluator.evaluate(ExpressionEvaluator.java:541)
2023/11/27 15:43:00 - User defined Java expression.0 - at org.codehaus.janino.ExpressionEvaluator.evaluate(ExpressionEvaluator.java:533)
2023/11/27 15:43:00 - User defined Java expression.0 - at org.pentaho.di.trans.steps.janino.Janino.calcFields(Janino.java:191)
2023/11/27 15:43:00 - User defined Java expression.0 - ... 3 more
2023/11/27 15:43:00 - User defined Java expression.0 - Caused by: java.lang.NullPointerException: Cannot read field "value" because "original" is null
2023/11/27 15:43:00 - User defined Java expression.0 - at java.base/java.lang.String.<init>(String.java:260)
2023/11/27 15:43:00 - User defined Java expression.0 - at SC.eval0(Unknown Source)
2023/11/27 15:43:00 - User defined Java expression.0 - ... 10 more][2]

Have you tried handling the error / exception in an "Error Handling" flow. In Pentaho Data Validator step, you can handle the errors by using the error handling step. Read this blog post to learn more about the Error Handling in Pentaho.