Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当我在Scala中发现数据处于不一致状态时,要抛出哪个异常?_Scala_Exception Handling - Fatal编程技术网

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

当我在Scala中发现数据处于不一致状态时,要抛出哪个异常?,scala,exception-handling,Scala,Exception Handling,我有一个从数据源读取数据的小型Scala程序。此数据源当前是一个.csv文件,因此它可能包含数据不一致 在为我的数据实现存储库模式时,我实现了一个方法,该方法将通过一个应该是唯一的特定字段返回一个对象。然而,我不能保证它真的是唯一的,就像在.csv文件中一样,我不能像在真实数据库中那样强制执行数据质量 因此,该方法检查存储库中是否有一个或零个具有请求的字段值的对象,这很好。但我对Scala(或者Java)不太了解,我发现Java异常层次结构的图表并没有太大帮助。如果有两个对象具有相同的假定唯一值

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

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


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

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


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

您也可以创建自己的@EndeNeu,我可以,但这次我不太关心它的类型,因为我不打算对它做任何特别的事情。我只是认为这是一种常见的情况,可能有一个关于如何处理它的约定,这是一个学习约定的好机会。创建自己的类型不会有什么特别的效果我知道,我对异常的了解还不足以为您的案例找到一个具体的异常,可能我会使用类似的东西,不确定它是否是一个相当普遍的异常。顺便说一句,可能的重复“必须在开发过程中修复”这是我听到的“该程序可以合理预期从”出售荣誉“中恢复”的真理的最好方式。