2016-10-27 16 views
-1

for 루프에서 파일을 처리 할 때 Java 예외를 잡으려고합니다. 그러나 루프가 실행되는 동안 자바 예외가 표시되지만 errorlevel은 항상 0입니다.오류 수준이 일괄 파일에서 Java 예외 catch

다른 방법으로 Java 예외를 잡을 수 있습니까, 아니면 내 코드가 잘못되었을 수 있습니까?

for /f %%a in ('dir /b /s %input%') do (


CALL jhove -m PDF-hul -h xml -o %output%\%%~na.xml %%a 

if %ERRORLEVEL% EQU 0 (
echo errorlevel equals %Errorlevel%) 

if %ERRORLEVEL% GEQ 1 (
echo error) 

set /a loop3+=1 
) 

예외는 다음과 같이이다 :

Verarbeite GBV85882115X 
java.lang.ClassCastException: edu.harvard.hul.ois.jhove.module.pdf.PdfSimpleObject cannot be cast to edu.harvard.hul.ois.jhove.module.pdf.PdfDictionary 
     at edu.harvard.hul.ois.jhove.module.PdfModule.readDocCatalogDict(PdfModule.java:1344) 
     at edu.harvard.hul.ois.jhove.module.PdfModule.parse(PdfModule.java:521) 
     at edu.harvard.hul.ois.jhove.JhoveBase.processFile(JhoveBase.java:803) 
     at edu.harvard.hul.ois.jhove.JhoveBase.process(JhoveBase.java:588) 
     at edu.harvard.hul.ois.jhove.JhoveBase.dispatch(JhoveBase.java:455) 
     at Jhove.main(Jhove.java:292) 

errorlevel equals 0 
+0

자바 프로그램을 System.exit (1)과 같이 0이 아닌 오류로 종료해야합니다. '너 그렇게하고 있니? – SomeDude

+0

@svasa이 자바 프로그램을 편집 할 수 없습니다. –

+0

호출자 프로그램에서 호출하는 API를 랩핑 할 수 있으며 예외가 발생하면 호출자 프로그램을 0이 아닌 값으로 종료합니다. – SomeDude

답변

0

자바 예외이 그것을 인쇄 할 같은 오류 stream.May 뭔가에 인쇄 (테스트)됩니다 :

set "print=" 
for /f %%a in ('dir /b /s %input%') do (
    for /f "tokens=* delims=" %%A in ('jhove -m PDF-hul -h xml -o %output%\%%~na.xml %%a 2^>^&1') do (
     echo %%A | find "ClassCastException" >nul 2>&1 && (
     set print=1 
    ) 
     if defined print echo %%A  
) 
)