在java中处理接口中的异常

时间:2015-07-25 17:23:54

标签: java interface

我想问一下,在界面中处理异常是一种好的做法还是可取的?例如:

 public interface myInterface{
  String readFile() throws IOException;
  String printValues() throws IOException;
}

这是处理异常的好方法吗?

2 个答案:

答案 0 :(得分:1)

Java中的接口方法可以声明方法抛出特定异常。这是一种最佳实践(当没有过度使用时),因为接口定义了可抛出的异常类。

按设计检查异常需要调用者对方法使用try-catch或declare throws。如果接口中的方法未声明异常,则该接口的实现不能覆盖该方法并抛出已检查的异常。抛出未经检查的异常(RuntimeException或它们的子类)的实现类如果没有正确记录或理解,可能会成为下游的潜在错误。对于常见异常,最佳做法是在界面中声明异常。许多java.io接口都遵循这种最佳实践。

示例:

df <- merge(x = df1, y = df2, by = "V2", all.x = TRUE)
df[!complete.cases(df), ]

有关详细信息,请参阅本教程,讨论已检查与未检查的异常。 https://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html

见相关问题:
Handling exceptions with interfaces and classes in java

答案 1 :(得分:0)

取决于,如果您认为调用者知道覆盖类可以抛出哪些异常并且客户端可以适当地处理它,那将是有用的。向用户显示消息。

e.g。你有一个ATM应用程序和withdraw方法抛出两个自定义异常,InvalidPinException和InsufficientBalanceException然后客户端可以作为调用者处理这些异常并向用户显示相应的消息。

从接口抛出这些异常意味着所有实现都可以抛出这些异常,并且作为调用者,您必须处理或重新抛出。