Java:编译期异常与运行期异常

图片说明

有些异常无法在编译期间检查出来,以你的例子为例,s可以来自用户输入(虽然你这里是直接赋值),但是也可以写
s = scanner.nextLine();
那么s是否是正确的日期格式,编译器自然就无从判断了。
你可以要求你的程序严谨,但是不可能要求你的用户也严谨,否则这是一件很荒谬的事情。(你见过哪个商业软件会告诉他的用户,你必须注意这个注意哪个,否则我们的程序就要崩溃)