java内部异常堆栈跟踪,捕获异常时抑制堆栈跟踪

我有一个简短的两步Spring Batch作业,它使用严格模式下的StaxEventItemReader从xml休息服务调用中读取 . 我希望它在严格模式下,因为没有连接到其余服务的能力,没有理由继续 . 我想捕获异常并使用自定义消息优雅地退出,而不是使用堆栈跟踪 .

我能够使用StepExecutionListener捕获异常,并使用afterStep()方法检查失败(stepExecution.getFailureExceptions()),但仍在输出堆栈跟踪 . 我收到自定义消息(下面的STS输出中的13:05:32,981)加上堆栈跟踪 . 当我使用带有onError方法的ItemReaderListener时,没有调用onError方法,我猜是因为它是初始化异常而不是读错误 .

捕获 failed to initialize reader 异常并从输出中抑制堆栈跟踪的最佳方法是什么?

SpringBatch工作:

processor="idExtractor"

writer="stationsWriter"

commit-interval="1">

processor="createRandomRequests"

writer="ngBroadcasterService"

commit-interval="400">

具有堆栈跟踪的STS输出:

13:05:30,479 [main] INFO SimpleJobLauncher - No TaskExecutor has been set, defaulting to synchronous executor.

13:05:30,776 [main] INFO DepartmentSendCountsNoOpReader - constructing stationSendCountsReader

LightYellow color:43

13:05:31,368 [main] INFO ProcessStatisticsTasklet - constructor...

13:05:31,525 [main] INFO RequestsListReader - constructing requestsListReader

13:05:31,588 [main] INFO Jaxb2Marshaller - Creating JAXBContext with classes to be bound [class com.pevco.pevcotubesystem.StationConfig]

13:05:31,886 [main] INFO SimpleJobLauncher - Job: [FlowJob: [name=randomSends2NG]] launched with the following parameters: [{hostNameOrIP=192.168.100.10:8383}]

13:05:31,902 [main] INFO SimpleStepHandler - Executing step: [getStations]

13:05:32,981 [main] ERROR AbstractStep - Encountered an error executing step getStations in job randomSends2NG

org.springframework.batch.item.ItemStreamException: Failed to initialize the reader

at org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.open(AbstractItemCountingItemStreamItemReader.java:147)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:497)

at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)

at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)

at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)

at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)

at com.sun.proxy.$Proxy8.open(Unknown Source)

at org.springframework.batch.item.support.CompositeItemStream.open(CompositeItemStream.java:96)

at org.springframework.batch.core.step.tasklet.TaskletStep.open(TaskletStep.java:310)

at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:195)

at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:148)

at org.springframework.batch.core.job.flow.JobFlowExecutor.executeStep(JobFlowExecutor.java:64)

at org.springframework.batch.core.job.flow.support.state.StepState.handle(StepState.java:67)

at org.springframework.batch.core.job.flow.support.SimpleFlow.resume(SimpleFlow.java:165)

at org.springframework.batch.core.job.flow.support.SimpleFlow.start(SimpleFlow.java:144)

at org.springframework.batch.core.job.flow.FlowJob.doExecute(FlowJob.java:134)

at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:304)

at org.springframework.batch.core.launch.support.SimpleJobLauncher$1.run(SimpleJobLauncher.java:135)

at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50)

at org.springframework.batch.core.launch.support.SimpleJobLauncher.run(SimpleJobLauncher.java:128)

at org.springframework.batch.core.launch.support.CommandLineJobRunner.start(CommandLineJobRunner.java:362)

at org.springframework.batch.core.launch.support.CommandLineJobRunner.main(CommandLineJobRunner.java:590)

Caused by: java.lang.IllegalStateException: Input resource must exist (reader is in 'strict' mode)

at org.springframework.batch.item.xml.StaxEventItemReader.doOpen(StaxEventItemReader.java:195)

at org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.open(AbstractItemCountingItemStreamItemReader.java:144)

... 27 more

13:05:32,981 [main] ERROR NoStationsStopListener - Not able to get stations list from NG. Check that NG is running

13:05:32,998 [main] INFO SimpleJobLauncher - Job: [FlowJob: [name=randomSends2NG]] completed with the following parameters: [{hostNameOrIP=192.168.100.10:8383}] and the following status: [FAILED]

13:05:32,998 [main] INFO ClassPathXmlApplicationContext - Closing org.springframework.context.support.ClassPathXmlApplicationContext@4f4a7090: startup date [Wed Jul 01 13:05:29 EDT 2015]; root of context hierarchy

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值