首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UniObjects for UniCommand.exec:如何在UniCommand.exec()中发生错误时获得响应字符串

UniObjects for UniCommand.exec:如何在UniCommand.exec()中发生错误时获得响应字符串
EN

Stack Overflow用户
提问于 2013-10-02 20:20:34
回答 1查看 654关注 0票数 1

我希望能够确定UniCommand不能使用UniObjects for Java完成的确切原因,以便告诉用户。我有以下代码,它们在理想的条件下按预期运行,但是如果command不是有效的命令,uniCommand.response()将返回一个空的String。我想知道为什么命令不能执行。我试着使用uniCommand.getSystemReturnCode(),但是如果命令没有成功完成,并且没有足够的信息,它总是返回-1。我该怎么找出到底出了什么问题?

代码语言:javascript
复制
UniCommand uniCommand = uniSession.command();
uniCommand.setCommand(command);
uniCommand.exec();
int status = uniCommand.status();
//int sysRet = uniCommand.getSystemReturnCode();

if (status == UniObjectsTokens.UVS_COMPLETE) {
    output(uniCommand.response());
}

一个例子:当我通过telnet在BLAH服务器本身上执行UniVerse时,我得到:

代码语言:javascript
复制
Verb "BLAH" is not in your VOC.

当我执行LIST BLAH时,我得到:

代码语言:javascript
复制
RetrieVe: syntax error.  Unexpected sentence without filename.  Token was "".
          Scanned command was LIST 'BLAH'

我希望使用UniObjects for Java在我的程序中获得这些准确的错误消息。这有可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-14 16:06:06

我也遇到过同样的问题,这似乎是uniobjects库的一个限制。处理它的一种方法是将命令包装在子例程中。

代码语言:javascript
复制
SUBROUTINE RUN.COMMAND(COMMAND,RESPONSE)
    EXECUTE COMMAND CAPTURING RESPONSE
END

然后使用UniSubroutine对象调用它。

代码语言:javascript
复制
String command = "LIST BLAH";
UniSubroutine sub = uniSession.subroutine("RUN.COMMAND", 2);
sub.setArg(0, command);
sub.call();
UniDynArray response = new UniDynArray(sub.getArg(1));

for (int i = 0; i < response.dcount(); i++) {
    String line = response.extract(i).toString();
    System.out.println(line);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19146112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档