我注意到在 Android 中似乎有点奇怪:如果未安装预期的应用程序/处理程序,则调用启动活动意图可能会引发 ActivityNotFound 异常,但在编码时没有警告。在编写文件读/写、网络等代码时,通常会给出警告,您必须将此函数标记为“抛出异常”,或者为某些异常添加try/catch。为什么活动意图不同?
此外,如果我将一个函数标记为“抛出 ActivityNotFoundException”,我仍然可以创建一个不会捕获此错误的调用者,它可以正常编译并且不会发出警告。为什么?
我注意到在 Android 中似乎有点奇怪:如果未安装预期的应用程序/处理程序,则调用启动活动意图可能会引发 ActivityNotFound 异常,但在编码时没有警告。在编写文件读/写、网络等代码时,通常会给出警告,您必须将此函数标记为“抛出异常”,或者为某些异常添加try/catch。为什么活动意图不同?
此外,如果我将一个函数标记为“抛出 ActivityNotFoundException”,我仍然可以创建一个不会捕获此错误的调用者,它可以正常编译并且不会发出警告。为什么?
没有给出警告的原因是因为不需要检查ActivityNotFoundException
extends 。RuntimeException
正如@Rocky Triton 所说,谷歌使用它的原因是,因为对于开发人员来说,必须检查每一个可能引发异常的语句是一个巨大的痛苦。尽管Java 不鼓励这样做,但它仍然为开发人员省去了很大的麻烦。(我什至讨厌不得不捕获 I/O 异常......)
因为强制未经检查的异常是可怕的,我很高兴谷歌没有让你。