通过引用传递Error对象而不是从方法中抛出异常是一个好主意吗?

时间:2014-04-10 12:25:41

标签: java exception-handling conventions

我正在为公司编写一个Utility API,我考虑到这一点,而不是实用程序方法抛出Exceptions,自定义的空Error对象通过引用传递给方法,并在异常情况下填充。

UML类图

ABCError

-code: long
-message: String
-throwable: Throwable

-ABCError()
-set(code,message,throwable) : void
-set(code,message) : void
-set(code):void
-set(message):void
-isSet() : boolean

用法:

ABCError error = new ABCError();
HttpResponse response = ABCHttpUtils.post(url,headers,parameters,error);
if(!error.isSet()){
//...
}

这是一个好主意还是坏主意,因为它破坏了Java编码约定?

1 个答案:

答案 0 :(得分:1)

这绝对是非惯用的Java;但是你的代码无法工作的主要原因是java只是按值传递 - 没有C ++风格的引用,没有OUT参数。

编辑:哦,等等,你不会在你的代码中使用引用本身 - 忽略它。但是,我强烈建议您不要使用可选的错误参数,因为您强制API客户端检查返回代码的所有调用,而不是在catch / finally块中。