【发布时间】:2013-08-07 09:51:02
【问题描述】:
我需要使用 scp 从远程主机复制一些文件。
如果文件不存在,我需要显示一条消息。
我遇到的问题是我无法捕获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( 'error', e.cause )显示什么? -
你能编辑问题并粘贴完整的例外吗?
-
我刚刚做了更改
-
那是
IOException,不是吗?println e.exception.class显示什么? -
它显示 java.io.IOException。但是如果我放了 catch(java.io.IOException e) 它就不会捕获它。
标签: ant groovy scp antbuilder