我正在使用包含“数据验证器”和“用户定义的 Java 表达式”步骤的简单转换来测试 kettle-sdk-embedding-sample。
其中一项测试包括处理垃圾数据以验证错误处理。根据数据的不同,两个步骤之一会出现错误。我预计会引发并捕获异常的是主要调用 java 函数here,但实际上并非如此。在引擎盖下的某个地方引发并捕获异常,并记录堆栈跟踪(请参见下面的示例)。永远不会到达应用程序的捕获代码。
这是故意设计的吗?有没有办法配置引擎向应用程序抛出异常以进行自定义错误处理?如果不是,引擎代码在哪里完成?我没能看到它在哪里完成,看看是否有办法处理它
谢谢你
[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]
您是否尝试过在“错误处理”流程中处理错误/异常?在 Pentaho Data Validator 步骤中,您可以使用错误处理步骤来处理错误。阅读这篇博文,了解有关 Pentaho 中的错误处理的更多信息。