补 Java 基础补到异常这一课,作业里有四个问题。本来以为就是背一下 checked / unchecked,结果第一个问题就把我问住了:
自定义异常为什么
extends RuntimeException?如果写extends Exception,程序不是直接断了吗?可读取失败又不该干扰程序运行……但被正常处理的话,两者不是一样吗?说真的我不知道为什么。
后来发现,这个“不知道”不是语法问题,而是 checked exception 的设计意图问题。顺便把工作里一直觉得别扭、又说不上来的一件事也想通了:为什么老代码里,一个很靠里的函数处理了异常,外面还是一串 throws。
于是有了这篇。