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

当我在Scala中发现数据处于不一致状态时,要抛出哪个异常?

马银龙
2023-03-14

我有一个从数据源读取数据的小型Scala程序。此数据源当前是一个。csv文件,因此它可能包含数据不一致。

在为我的数据实现存储库模式时,我实现了一个方法,该方法将通过一个应该是唯一的特定字段返回一个对象。然而,我不能保证它真的是独一无二的,就像在一个游戏中一样。csv文件,我不能像在真实数据库中那样强制执行数据质量。

因此,该方法检查存储库中是否有一个或零个具有请求的字段值的对象,这很好。但我对Scala(或者Java)不太了解,我发现Java异常层次结构的图表并没有太大帮助。如果有两个对象具有相同的假定唯一值,那么这将是适当的异常。我应该用什么?

共有2个答案

单于高逸
2023-03-14

您总是可以使用自定义的异常,如果这是一个Web API,您可能希望将异常映射到:坏请求(400)代码。

汤承允
2023-03-14

对于这种情况,有两种方便的例外情况:IllegalStateExceptionIllegalArgumentException。当对象内部状态处于某个非法位置时(例如,您调用了两次connect),使用第一个,当存在来自外部世界的数据且不满足某些规定条件时,使用最后一个(似乎更适合您的情况),当函数应该与零一起工作时

两者都不应该在调用方以编程方式处理(用try/catch)——它们意味着应用编程接口的非法使用和/或程序流中的逻辑错误,这些错误必须在开发过程中修复(在你的情况下,他们必须通知传递数据的开发人员,该特定字段必须只包含唯一的值)。

 类似资料:
  • 问题内容: 作为升级JRun的一部分,我们正在从1.4 JVM迁移到1.6 JVM。现在,我收到一个非常奇怪的oracle db错误:“ OALL8处于不一致状态”。我已经解决了插入根本不使用绑定变量的查询的问题- 所有内联参数。如果我在没有任何绑定变量的情况下运行查询,则会收到上述错误。一旦我用绑定变量替换了一个硬编码值,一切都会正常工作。 另一个奇怪的地方是,在执行查询之后,它实际上已提交给数

  • 我需要从java调用scala代码,因此需要告诉编译器某个方法抛出某些异常。对于一个异常很容易做到这一点,但是我很难声明一个方法抛出多个异常。 这不起作用:

  • 我想这意味着查询已经执行,MySQL正在向客户机发送“结果”数据,但我想知道为什么要花这么多时间(长达一个小时)。 谢谢你。

  • 我正在使用Jersey开发RESTAPI。我需要添加一个方法,但它会引发异常。 这就是我现在尝试添加的方法: 在现实中,方法中有更多的内容,但内容并不重要。当类中存在此方法时,我在尝试访问服务器时会得到以下异常: 类中还有其他方法可以正常工作,但是当我添加这个新方法时,一切都停止了工作。 这是我网站的内容。xml文件: 如果我将注释更改为并删除注释,则一切正常。为什么我不能添加一个新的?

  • 下面是我在api调用上运行的代码。下面的代码位于grails服务中,默认情况下是事务性的。但是,即使在锁定行之后,我也会收到这样的错误:。数据库中只有一个计划,所以for循环只运行一次。但对api的并发调用会导致错误。请帮我解决这个问题

  • 我见过这样的例子 但我也认为这是一种选择 抛出异常或简单返回NotFound (IHttpActionResult实例)有什么好处吗? 我知道响应/请求管道中的某些阶段可以处理这些结果中的任何一个,就像第一个示例一样