编译时异常可以认为是程序存在的潜在风险,例如程序要打开一个文件,但是文件不存在,或者试图创建一个socket,但是远程主机没有开机等等,这种情况不是代码写得有错误,写代码的时候不能确定异常情况会不会发生,但是知道存在这样一种风险。像eclipse这样的IDE能够根据上下文知道某些操作是否存在什么样的风险,会给出提示。
运行时异常可以认为是程序写得有问题,比如说数组越界、除以0和空指针访问等等,IDE是不能检测出代码中的bug的。这种情况引起的异常称为运行时异常,简单来说就是代码中的bug。