java Exception和Error的联系区别

对异常的处理是程序不可避免的,如何处理异常?异常又是如何划分的呢在java语言里?

  • java 最顶级的异常类是Throwable,所有异常都继承它,这也是java 语言的特性之一:类单继承,区别于C++的多继承。
  • Error 和Exception是Throwable的两个子类,代表了程序运行的不同状态。
  • Error 表示程序发生了严重的错误,导致程序无法正常进行下去,常见的比如OOM和oos,内存溢出和栈溢出错误。
  • Exception 表示程序发生了意料之外的或是预料到的错误,不会影响程序的正常运行下去。常见的空指针异常(NullException)、数组越界异常、Io异常等,这些异常的发生会导致程序部分运行出现了错误,或者是一次请求或者是一次文件操作。
  • Exception分为可检查异常和不可检查异常。可检查异常明确需要处理的异常,即程序必须捕获或者抛出。非检查异常是没有预料的异常,比如空指针。
  • Error 的发生无法程序里进行逻辑控制,那么如何应对Error的发生呢?
  1. 写代码时注意代码的健壮性,健壮的代码可以最大程度减少Error的发生。
  2. 避免单点,比如OOm这样的错误,如果系统不是单点的就可以避免一台机器故障时,服务也是正常的。
  3. 理解常见的错误,比如Oom,NoClassDefFoundError,栈溢出。可以遇见时快速定位解决。
  • Exception 这就是我们可以在代码里进行控制的。如何控制?
  1. 避免直接使用e.printStackTrace();,输出异常信息时最好使用日志输出,输出当前的类和方法。
  2. 避免忽略异常不处理,异常一旦捕获就要处理,不然会导致程序莫名的结果,而不知道哪里有问题。

  3. 异常的开销是很大的,如果不是必要不要使用异常,即try catch,throws.

  4. Throw early, catch late 原则。

  • 程序里我们经常自定义异常,这里就需要保证自定义异常要有明确的意义。在这个异常发生时我们明白程序发生了什么事情。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值