gpt4 book ai didi

java - api中的异常处理

转载 作者:行者123 更新时间:2023-11-30 06:48:18 25 4
gpt4 key购买 nike

我有一个 java 接口(interface),其方法如下 -

List<TalkDO> process() throws DurationException;

DurationException 是未经检查的异常。

我正在为此函数编写一个实现,其中我从文件中读取数据并逐行处理每一行。读入文件需要处理FileNotFoundException和IOException。我必须向调用者抛出这个异常,并让它知道这两个异常已经发生,但是抛出这个异常会让它像

List<TalkDO> process() throws IOException, FileNotFoundException

这在java中是不允许的。我的方法是什么,我不想在我的处理方法中捕获和处理 IOException 和 FileNotFoundException

最佳答案

由于您的界面有多种实现,并且根据您的评论,有些不使用 File ,我认为提供一个指定每个实现的异常的接口(interface)对于客户端来说可能很麻烦。
为什么要强制客户抓FileNotFoundException如果他使用的实现不能抛出它?

更灵活的方法是在 List<TalkDO> process() 中声明仅抛出运行时异常.

在您的实现中,您应该捕获已检查的异常并重新抛出一个RuntimeException它们的版本。
这样,每个客户端都会捕获他需要的异常。

界面

public MyInterface {
public List<TalkDO> process() throws DurationException, IORuntimeException, FileNotFoundRuntimeException
}

使用文件实现

public MyFileImpl implements MyInterface{
public List<TalkDO> process() throws DurationException, IORuntimeException, FileNotFoundRuntimeException{
...
try{

}
catch (IOException e){
throw new IORuntimeException("your msg", e);
}
catch (FileNotFoundException e){
throw new FileNotFoundRuntimeException("your msg", e);
}
}

不使用文件实现

public MyInMemoryImpl implements MyInterface{
public List<TalkDO> process() throws DurationException {
...
}
}

关于java - api中的异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43300180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com