课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > 你必须要知道的异常处理机制
  • 你必须要知道的异常处理机制

    发布:徐瑱      来源:新致云       时间:2016-07-29

  • 学Java的人都知道,在现代程序设计中,为我们提供了异常处理机制。而异常处理机制如何恰当选择,成为了程序设计者比较头疼的事。下面我们就以Java为例,来看一下异常机制的一些特征。

    提起异常的特征,第一感觉就是非常昂贵。为什么呢?因为我们需要捕获异常堆栈的当前状态。而且这还不是开销的所有,只是个开头。还有一些其他的特征,包括 可以创建、可以被捕获、表示为第一级对象、继承深度3级以上等等。异常对象与正常对象最大的区别,就是它们可以被抛出和捕获。

    接下来我们看下处理异常的流程。

    JVM通过抛出athrow指令来抛出异常。该指令会使得JVM将异常对象弹出异常堆栈,然后JVM通过搜索当前执行堆栈帧来得到第一个Catch子句来处理该类或者其超类的一个异常。如果没找到,那么需要释放当前的堆栈帧,在下一个堆栈帧中重新抛出。这样一直到找到包含匹配的Catch子句的堆栈帧,或者到达异常堆栈的底部。如果一直没有找到,所有的堆栈帧都会被释放,线程会在ThreadGroup对象有了被处理异常的机会后被中止。如果找到,则程序计数器被重置到Catch代码的第一行。

    从上述可以获知,相对于类型检查,抛出异常的处理实在是非常昂贵的。而且,针对异常的处理,跟普通一级对象并没有特殊区别。我们可以得出一个结论就是异常机制应该为异常的情况保留。在超过函数逻辑本身的特殊情况下,使用异常处理是一个合适的选择。在无异常的情况下,还是通过检查来避免使用异常抛出从而可以得到一个对于较优的选择。

    现在你明白了吗?其实异常处理并不难,只要你选对方法。

    推荐文章

上一篇:这些编程语言,非程序员也应该知道

下一篇:如何理解JVM?

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:12/29

Java--零基础业余班

Java--零基础业余班

开班日期:12/29

Java--周末提升班

Java--周末提升班

开班日期:12/29

Java--零基础周末班

Java--零基础周末班

开班日期:12/29

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56