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

Kotlin忽略CheckedException会导致潜在的bug源

鲁昕
2023-03-14

如果在Java代码中调用,下面的方法将警告IOException,但将忽略Kotlin中的任何警告,因为IOException是已检查的异常。

ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_WRITE) 

Java迫使开发人员在抛出异常时采取安全措施,但在Kotlin中,它只是忽略了异常,从而产生了潜在的bug源。我确信有很多类似的情况,检查的异常被忽略了。

问题是如何处理这样的案件?

共有1个答案

夏意蕴
2023-03-14

如果方法抛出未经检查的异常,Java不会警告你,你是如何处理这种情况的?在这里您所能做的最好的事情就是检查Java文档或调用方法的源,看看它是否抛出了任何异常。或者只是捕获调用此方法的代码中的任何异常。

如果您想问为什么Kotlin没有像Java那样的检查异常,Kotlin docs about exceptions提供了一个解释,为什么他们决定远离检查异常。报价:

对小程序的检查会得出这样的结论:要求异常规范既可以提高开发人员的工作效率,也可以提高代码质量,但是大型软件项目的经验却表明了一种不同的结果--工作效率降低,代码质量几乎没有提高。

 类似资料:
  • 场景: 我只有一个生产者和消费者,只有一个队列来传输消息。使用者将根据已使用该值的消息更新DB上的值。不应将任何操作并行发送到DB。所以,我们不应该做任何导致数据库上数据并发的事情。我使用一次接收一条消息。删除是否会导致多个操作并行发送到DB?

  • 我遇到了一种奇怪的行为。我的应用程序有一个主要活动,由navdrawer布局和默认列表片段组成。列表片段使用改造客户端获取内容。选择列表项时,将显示详细视图。在小屏幕上,通过单独的活动加载详细信息视图。该活动还使用改装客户端获取详细信息。然后,可以从生成新活动的navdrawer中选择一个选项。该活动也使用改造客户端发送数据。 列表和详细活动很好地调用了改造方法。我可以看到日志和事情正在按预期工作

  • 问题内容: 我正在使用bulk_create将数千或行加载到Postgresql数据库中。不幸的是,某些行导致IntegrityError并停止了bulk_create进程。我想知道是否有一种方法告诉django忽略这些行并尽可能多地保存批处理? 问题答案: 现在可以在Django 2.2上实现 Django 2.2 从文档中为该方法添加了一个新选项: 在支持它的数据库上(除PostgreSQL

  • 我正在用Python编写一个自定义备份脚本。有时mkdir函数或print函数或任何函数由于各种原因而失败。这样的异常会使整个脚本停止,并在中途停止备份,这是非常令人沮丧的。到目前为止,我已经通过添加try:...except:...语句并正确管理这些异常来管理这些问题。但是,有一天,某个其他语句或函数也可能因为尚未触发的其他原因而引发异常。 有没有一种方法告诉脚本继续进行?是否相当于在try:.

  • 所以在用kotlin类做了大量的试验和错误之后,我发现同样的代码在java中是可测试的,但在kotlin中是不可测试的。 这会导致:org . mock ITO . exceptions . mis using . missingmethodinvocationexception:when()需要一个必须是“模拟上的方法调用”的参数。比如:when(mock.getArticles())。然后返回

  • 我正在尝试理解kotlin协程,我来自C#,在kotlin中有一些我不理解的地方。在这种情况下,我正在使用Qukus框架中的静态编程语言编写一个webapi。从我可以看出,如果我将控制器(或资源)函数标记为挂起函数,Qukus将自动在协程中启动它。 我的问题是,我不知道挂起该协程的首选方法是什么。我在kotlin协程上看到的绝大多数示例都使用delay()函数,该函数在内部使用suspendCan