Roa*_*oam 20 java runtime-error runtimeexception
在异常层次结构中,后代RuntimeException和Error运行时异常/错误的后代 
 .
两者之间的区别在于:那些RuntimeException是由编程/设计不良引起的那些,以及那些Error不能/不应该由开发人员控制的那些.
例如,为了在应用程序中编写异常,在业务逻辑中发生某些事件时抛出异常,RuntimeException就会扩展.
问题是,扩展RuntimeException和扩展之间究竟有什么区别
 Error- 除了扩展
 Error是不好的做法?
Pit*_*ita 20
两者Error并RuntimeException没有勾选的异常,这意味着它表明有该程序的缺陷,而且通常不应该被捕获.(NullPointerException,IndexOutOfBoundsException等)
我认为两者之间的主要区别在于RuntimeException表明程序存在错误,而且这Error是一个致命但不受程序控制的东西.(OutOfMemorryError,ThreadDeath等)
因此,对a进行子类化Error是不好的做法,因为错误通常不是程序可以在运行时修复的.在你的程序中,如果你需要扔东西,请使用Exception.
问题是,扩展RuntimeException和扩展Error之间究竟有什么区别 - 除了扩展Error是不好的做法?
你已经提到了主要的区别.Java语言规范用不同的术语说同样的东西.因为Error,它说
Error是普通程序通常不会恢复的所有异常的超类.
因为RuntimeException,它说
该类
RuntimeException是Exception的直接子类.RuntimeException是表达式评估期间由于多种原因可能抛出的所有异常的超类,但仍可能从中 恢复.
你应该从这些引用中得到的是你常常会看到的
try {
   ...
} catch (Exception e) { // catches RuntimeException
   ...
}
作为一个捕获所有案例,因为Exception是一个超级类型RuntimeException.但你几乎永远不会看到(我从未见过它)
try {
   ...
} catch (Error e) {
   ...
}
| 归档时间: | 
 | 
| 查看次数: | 18671 次 | 
| 最近记录: |