Java常见的异常,Java运行时异常和一般异常的区别

Java常见的异常,Java运行时异常和一般异常的区别




异常和错误二者的不同之处:



Exception:

1.可以是可被控制(checked,检查异常) 或不可控制的(unchecked,非检查异常)。
2.表示一个由程序员导致的错误。
3.应该在应用程序级被处理。


JavaDoc:RuntimeException and its subclasses are unchecked exceptions. Unchecked exceptions do not need to be declared in a method or constructor's throws clause if they can be thrown by the execution of the method or constructor and propagate outside the method or constructor boundary.

原则:

引用某个人的话:几乎在所有的情况下都不应当使用检查型异常。当遇到检查型异常无法处理的情况时,应该使用异常转译转换为非检查型异常再抛出。(原作者不明) 在Think in Java 4th Edition上作者对这样的观点进行了详细的描述。



Error:

1.总是不可控制的(unchecked,(广义上的)非检查异常)。
2.经常用来用于表示系统错误或低层资源的错误。

3.如何可能的话,应该在系统级被捕捉。

JavaDoc:  An Error is a subclass of Throwable that indicates serious problems that a reasonable applicationshould not try to catch.

Error and its subclasses are regarded as unchecked exceptions for the purposes of compile-time checking of exceptions.


可检查异常经编译器验证,对于声明抛出异常的任何方法,编译器将强制要求进行异常处理。

为什么Error子类属于非检测异常?这是因为无法预知它们的产生时间。若Java应用程序内存不足,则随时可能出现OutOfMemoryError;起因一般不是应用程序中的特殊调用,而是JVM自身的问题。另外,Error类一般表示应用程序无法解决的严重问题,故将这些类视为 非检查异常。编译器不强制要求编写异常处理代码。

RuntimeException即运行时异常,属于非检查异常,它们表示的问题不一定需要异常处理。可以在try-catch结构中处理NullPointerException,但若在使用引用前测试空值,则更简单,更经济。同样,可以在除法运算时检查0值,而不使用ArithmeticException。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值