请帮我看下下面的两个概念有没有问题?(1)异常,就是指程序在运行时出现不正常的情况(2)对于异常:分两种:
1,编绎时被检测的异常(也就是说这个异常是可以被处理的)
2,编绎时不被检测的异常(运行时异常,RuntimeException及其子类);既然异常是运行时出现,为什么编译时检测而不是运行时检测呢?
感觉这俩概念好矛盾啊,求解
1,编绎时被检测的异常(也就是说这个异常是可以被处理的)
2,编绎时不被检测的异常(运行时异常,RuntimeException及其子类);既然异常是运行时出现,为什么编译时检测而不是运行时检测呢?
感觉这俩概念好矛盾啊,求解
lz,你说的异常的两种定义,在别的地方看到还比较少!
你是不是这个意思:
1,编绎时被检测的异常,如IO、数据库异常等;
2,编绎时不被检测的异常,如数组越界、空指针等。至于你的疑问“既然异常是运行时出现,为什么编译时检测而不是运行时检测呢?”
这个编译时的检查,是非常有必要的。我们要写出更加健壮的程序,就需要更多的提示:如果能在运行前预知并解决更多的异常,那么程序就会更健壮,因为运行时出现Exception,那就会直接影响生产环境了。
所以JDK也是朝这个方向走的,像JDK1.5的泛型就是为了多加约束,减少运行时的类型转换异常。
另外回答你的问题,对于程序来说,异常都是运行时发生的。