我注意到在Android中看起来有些奇怪的东西:调用启动活动意图可以抛出一个ActivityNotFound异常,如果没有安装预期的app / handler,但编码时没有警告这个。在编写文件读/写,网络等代码时,它通常会发出警告,您必须将此函数标记为“抛出异常”,或者为某些异常添加try / catch。为什么活动意图不同?
此外,如果我将一个函数标记为“抛出ActivityNotFoundException”,我仍然可以使一个调用者没有捕获到这个错误,它编译得很好并且不会发出警告。为什么呢?
答案 0 :(得分:2)
因为迫使未经检查的异常是可怕的,我很高兴谷歌不会让你。
答案 1 :(得分:2)
没有给出警告的原因是因为ActivityNotFoundException
扩展RuntimeException
而不必检查。谷歌使用它的原因是,正如@Rocky Triton所说,因为开发人员必须检查可以抛出异常的每一个语句是一个巨大的痛苦。虽然Java discourages this,它仍然为开发人员带来了巨大的麻烦。 (我甚至讨厌必须捕获I / O异常......)