我正在使用声称如果成功则返回true的API,如果失败则返回false。但是,如果它失败,它还声称会抛出不同的例外。它如何返回false并抛出异常?
答案 0 :(得分:28)
既不能抛出异常并从单个函数调用返回值。
如果出现错误,可能会返回false
,但如果输入无效则抛出异常。
编辑:PaulPRO发布了一个(现在已删除的)答案,指出技术上可能会导致异常被抛出到另一个线程中,同时返回一个值目前的一个。我认为这值得注意,即使它不是你应该看到的东西。
答案 1 :(得分:19)
您可以抛出具有 a(在本例中为boolean)值的异常:
public class ValueException extends Exception {
final boolean value;
public ValueException(boolean value, String message) {
super(message);
this.value = value;
}
public boolean getValue() {
return value;
}
}
答案 2 :(得分:0)
虽然可以以这样的方式编写代码,即可以从函数调用中获得异常AND值(参见上面的帖子),但绝对不能在正确的编码中完成。
我很想看到有关此API文档的链接。 API应优先考虑清晰度。抛出异常并返回值会留下返回的值是否可以安全使用或者是否无效的问题。
请记住,try / catch块是处理异常的OTHER方法。它们不会将异常传递给调用方法,而是以开发人员认为合适的方式在内部处理它。
如果出于调试目的,您需要在异常的情况下查看结果值,那么波希米亚的想法效果很好。