Мне нужно скопировать некоторые файлы с помощью scp с удаленного хоста.Groovy AntBuilder scp catch exception
Если файла нет, мне нужно отобразить сообщение.
Проблема, которую я имею, заключается в том, что я не могу поймать исключение FileNotFound
. Все, что у меня есть, это BuildException, но это повышается, даже если связь не может быть выполнена, например.
Вот мой код
def ant = new AntBuilder()
ant.scp(
trust:true,
file:"theFileToLook",
todir:"destinationFolder",
keyfile: "myrivateKeyFile",
verbose:true
)
Когда я поставил
catch(Exception e){
log.error("error", e)
}
я следующее:
java.io.IOException: scp: theFileToLook: No such file or directory
at org.apache.tools.ant.taskdefs.optional.ssh.ScpFromMessage.startRemoteCpProtocol(ScpFromMessage.java:189)
at org.apache.tools.ant.taskdefs.optional.ssh.ScpFromMessage.execute(ScpFromMessage.java:143)
at org.apache.tools.ant.taskdefs.optional.ssh.Scp.download(Scp.java:276)
at org.apache.tools.ant.taskdefs.optional.ssh.Scp.execute(Scp.java:221)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at MyService$$EODjgsH6.executeScp(MyService.groovy:98)
at MyService$$EODjgsH6.getFileFromRemoteHost(MyService.groovy:63)
at MyController.get(RetrieveController.groovy:36)
at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195)
at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
Когда я кладу println e.class
отображает BuildException
. Проблема в том, что если я пытаюсь поймать IOException, она не пройдет внутри catch.
Любые идеи?
, что делает 'log.error ('ошибка', e.cause)' шоу? –
То же сообщение –
Можете ли вы отредактировать вопрос и вставить полное исключение? –