当前位置: 首页 > 知识库问答 >
问题:

在这种情况下我应该如何处理异常

雍阳
2023-03-14

你好,我正在学习OOP,通过编写一个虚拟的库管理项目在Java。

在serachBook()中,如果在ArrayList中找到book,则返回book对象,如果未找到,则抛出自定义异常BookNotFound。

问题1:它应该只返回null并在调用代码时检查返回值是否为null,还是抛出自定义异常BookNotFound。

目前我认为BookNotFinder是合适的,并且目前正在这样做。然而,我发现还有一个困难:在addbook()中,我首先调用search chBook()来查看已经存在的书,如果不存在,它会添加这本书。但是,如果书不存在,search chBook()会抛出BookNotFind。

问题2:我应该如何处理addBook()中的search chBook()抛出的这个异常,因为为了addBook()将书插入列表中,必须发生BookNotFind异常。那么我应该写空Catch(BookNotFinde){}吗?

什么是更好的OO实践?

共有3个答案

弘柏
2023-03-14

我的建议是,如果找不到书,可以选择返回“null”。仅使用异常来处理“不那么常规”的场景,从您的描述来看,“搜索书”和“添加书”看起来是一个相当常见的场景。

使用异常涉及开销:
Java异常有多慢?
http://apmblog.compuware.com/2011/04/12/the-cost-of-an-exception/

姚实
2023-03-14

返回空值。

使用异常控制程序流是一个非常糟糕的主意。例外是例外情况,找不到的书也不是例外情况。

当您的方法无法处理情况并希望向调用者发出信号时,就会抛出异常。您可以通过返回null来处理它。

在类似的情况下,有很多JDK类返回null的例子,例如Map。get(key)在映射中找不到键时返回null。

董砚
2023-03-14

如果找不到book,则应返回null,并在方法文档中声明,

抛出异常是一项代价高昂的操作,而且它非常适合于异常情况(例如在searchBook()方法中传递null的书名

 类似资料:
  • 问题内容: 该代码应获取或创建一个对象,并在必要时对其进行更新。该代码已在网站上投入生产。 在某些情况下-当数据库繁忙时-它会引发异常“ DoesNotExist:MyObj匹配查询不存在”。 我在ubuntu上使用了一个innodb mysql数据库。 我如何安全地处理此问题? 问题答案: 基本上get_or_create 可能会失败 -如果你查看其来源,就会发现它是:get,if-proble

  • 这是我的建筑。格雷德尔: 我试图找出问题所在,使用以下代码来分析问题: 结果是:

  • 我在使用fs.readfile进行同步时遇到了一个问题,他们没有在第一次初始化,如果我再次尝试请求,那么我就有结果了。我知道我可以用promise和我从Kriskowal找到一些有用的东西。我试过但没有成功。我不太明白如何实施它。如果有人能帮忙,我将永远感激。 代码:

  • 我用干净的架构在android项目上工作。 我有以下课程: 使用public dispose()方法从onNext实现中释放序列。 但我还是不明白使用它的好处。是否用于在销毁视图时从observable取消订阅,以便从转到并关闭发射器上的订阅?

  • 事件处理程序添加到GameGui.java类的GridPane中,从第82行开始。 基本上,我试图找到您在网格窗格中拖动这个对象的任何节点的索引。通过将SetonMouseEnter应用到gridpane中的每个节点,我可以在不拖动的情况下完成这一任务,但是当我试图利用SetonMouseDragEnter时,我什么也没有得到。 有人有办法让这个工作吗? 这些是我应用于GridPane中节点的事件

  • 想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。 创建一个简单的 Java 程序,该程序使用一个参数实现方法,该参数将返回变量的平方值。 示例输出:x的值是:10,10的平方值是:100