【发布时间】:2017-01-04 01:25:18
【问题描述】:
public WHATTOWRITEHERE test()
{
try
{
transaction.begin();
code which may trigger exception
transaction.commit();
return true;
}
catch (javax.script.ScriptException ex)
{
transaction.rollback();
return ex.getMessage();
}
}
上面的代码打算做某事,如果OK则返回true如果不是(发生错误),则应该返回此错误消息string。用 PHP 可以,但用 Java 不行
编辑:期望不能出去,必须在这里处理。
【问题讨论】:
-
当 smth 出错时只返回一个布尔值或抛出异常。将异常处理留给调用者。
-
这在 Java 中是不可能的。让异常通过吧。
-
既然你不想让异常出去,你可以这样做。如果一切顺利,则将“true”作为字符串返回。如果发生错误,则返回错误消息。在方法签名中,将返回类型设为 String。这基本上是一个糟糕的设计。
-
这肯定是重复的。看看How to write Java function that returns values of multiple data types?。我当然希望还有其他人。
-
既然要求
ScriptException不会逃逸到您的方法之外:回滚后是否会抛出其他异常以指示失败?一种标准方案是将原始异常包装在调用者可以处理的新异常中。
标签: java