[英]Refactoring exception code in java
我正在研究应该为两个不同的事物引发相同异常的代码,并且我不想将getExceptions方法与getIsbnNumber()方法一起使用。
有什么方法可以重构代码?
public void getIsbnNumber()
{
try
{
value = new URN("urn:isbn:12345");
if (value.getSecondElement() != "isbn")
{
//throws the urn same exception
}
}
catch(URNException exception)
{
//throws the urn same exception
}
return value.getThirdElement(); // return 12345
}
确实,抛出异常,捕获并再次抛出异常没有任何意义(除非您要在重新抛出异常之前要做某些事情-此处似乎并非如此)。
只需将它扔一次就可以了:
public void getIsbnNumber()
{
value = new URN("urn:isbn:12345");
if(value.getSecondElement() != "isbn")
{
//throws the same exception
}
return value.getThirdElement(); // return 12345
}
我认为这里没有什么要修复的。 例如,在使用IO时,您会发现很多东西。 这种代码看起来很熟悉?
BufferedWriter bw = null;
try {
bw = openWriter();
doStuff();
} catch (IOException e) {
handleError();
} finally {
try {
if (bw != null) bw.close();
} catch (IOException e) {
// do nothing, or print stacktrace
}
}
在IO的特殊情况下,您可以使用更好,更安全的Java构造,即try-with-resources :
// this will close bw no matter what
try (BufferedWriter bw = openWriter()) {
doStuff();
} catch (IOException e) {
handleError();
}
如果您正在使用资源,请将它们设置为Closeable
或AutoCloseable
并使用它。 否则,除了double try-catch之外,您别无选择。 为我们提供更多详细信息,以获得更好的答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.