32

我正在寻找一种将 groovy 脚本中的输出重定向到 stderr 的方法:

catch(Exception e) {
    println "Want this to go to stderr"
}
4

4 回答 4

24

就在我的脑海中,你不能做一些自我布线:

def printErr = System.err.&println
printErr("AHHH")

但这有点手动

于 2008-12-19T21:07:32.510 回答
20

Groovy 可以访问 JRE:

System.err.println "goes to stderr"

虽然可能有一种更 Groovy 的方式......

于 2008-12-19T19:24:20.987 回答
19

另一个非常紧凑的替代方案是:

System.err << "Want this to go to stderr"

或者您可以在脚本顶部添加它

def err = System.err
...
err << "Want this to go to stderr"

这就是我现在在我的 groovy shell 脚本中所做的

于 2010-12-09T14:00:15.277 回答
1

如果您只想输入更短的内容,这里有两个选项。首先,你可以将 java.lang.System 导入为任何你喜欢的东西,特别是像“sys”这样更短的东西:

import java.lang.System as sys
sys.err.println("ERROR Will Robinson")

其次,您可以将 System.err 流分配给一个变量,然后将该变量用作 System.err 的别名,例如:

err = System.err
err.println("ERROR again Will Robinson")

这样做的好处可能是 System.err 的所有功能都可以访问,因此您不必单独连接每个功能(例如 err.print、err.println 等)。

希望有一个标准的 Groovy 方式,因为特殊的重命名可能会让阅读您的代码的人感到困惑。

于 2009-03-14T21:09:14.733 回答