`
night_lone
  • 浏览: 60833 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

高质量程序设计--异常

    博客分类:
  • J2SE
阅读更多

异常处理,是Java中最强大,也是最容易被误用的机制。

使用异常的第一步是决定是否使用异常,异常并不是在任何情况下都适用。

决定适用异常之后,必须决定如何适用异常。


所谓异常处理,就是通知客户程序发生了非正常情况的机制。

以下几种非正常情况:

    编译错误(compile error):语法错误。

   逻辑错误(logical error):算法错误。只有cheng程序员才能检查这种错误。

   运行时错误(runtime error):执行错误。一般为:数学运算发生溢出,磁盘空间不足或是文件损坏等在正常情况下不可能发生的错误。

异常就是JVM发给java程序的通知。java程序是JVM的客户。异常就是通知

 

 

条款1[规则】用时间频度来确定异常情况

当java程序违反了Java的语义规则时,Java虚拟机会将发生的错误表示为一个异常。

两种违反语义规则的情况:

      一种是Java类库内置的语义检查。如:数组下标越界,会引发IndexOutOfBoundsException;访问null的对象,会引发NullPointerException.

     另一种是:程序员自己定义的异常。

任何异常都会引起程序控制流的转移,当异常被抛出后,JVM会在抛出异常的方法中寻找最近匹配的Catch语句,如果没有,

则在调用方法中寻找,直至遍历调用栈中所以方法为止。如果没有找到任何匹配的catch语句,则会调用ThreadGroup.uncaughtException()方法。

 

所以的异常都是java.lang.Throwable的子类。更严谨一点说,我们应当尽量使它们仅仅是Error,Exception或者RuntimeException的子类。

 

finally关键字是对java异常处理模型的有益补充。finally块中的代码总会执行,而不管有无异常发生。 使用finally可以维护对象的内部状态,并且finally是释放非内存资源的最佳场所。

 

  异常对性能的影响表现在两方面: 一是异常的创建,捕获和处理都需要较高的代价。这同JVM处理异常的方式有关

    在java内存模型中,有一个称之为栈的内存区域,每一次方法调用,都会生成一帧来存储方法的相关信息,包括局部变量,参数,返回值和代码信息。

 

 

 

分享到:
评论

相关推荐

    高质量java程序设计读书笔记

    高质量java程序设计读书笔记,重点介绍异常、OOP编程中的继承和组合的设计方法。

    高质量Java 程序设计

    pdf格式可用Foxit Reader打开 包括Java程序的异常处理、编码规则和组织结构、内存管理、面向对象的设计与实现、性能调整,Java编码最佳实践,Java类库的高级用法及与当代软件工程的结合等。

    GDI+图像程序设计(PDF & 源码 -电子工业出版社)

    本书是一本为.NET开发人员讲授如何编写Windows和Web图形应用程序的专著,书中全面介绍了GDI+和Windows图形程序设计的基本知识和GDI+图形程序设计的各个方面。 本书适合于开发GDI+图形应用程序的初、中级程序员...

    计算机专业毕业设计-微信小程序案例-ssm微信小程序的食堂窗口自助点餐系统-毕设源码+说明文档.rar

    **微信小程序案例:SSM食堂窗口自助点餐系统** 此资源是一套完整、可二次开发的计算机专业...此资源旨在帮助计算机专业毕业生快速构建一个高质量的毕业设计项目,同时也为相关开发者提供一个可二次开发的参考模板。

    Python程序设计基础教程08.pptx

    第8章 异常处理及程序调试 Python程序设计基础教程(慕课版) 工业和信息化人才培养规划教材 国家精品资源共享课程配套教材 高职高专计算机系列 人 民 邮 电 出 版 社 Python程序设计基础教程08全文共64页,当前为第...

    ICE分布式程序设计中文版

    第 17 章 异步程序设计 443 17.1 本章综 443 17.2 引言 443 17.3 使用 AMI 446 17.4 使用 AMD 452 17.5 总结 459 第 18 章 Ice 协议 463 18.1 本章综 463 18.2 数据编码 463 18.3 协议消息 486 18.4 压缩 494 18.5 ...

    《Python程序设计基础》慕课建设的探索与实践.docx

    《Python程序设计基础》慕课建设的探索与实践 一、项目的目标和背景 本项目旨在构建一套高质量、鲜活生动、系统完整、具有实战性的Python程序设计基础慕课教学体系,力求实现对初学者的从入门到实践的快速成长和...

    C#GDI+图形程序设计源码

    15.1 设计交互式GUI应用程序 15.2 绘制具有形状的窗体和Windows控件 15.3 为绘制的图像添加版权信息 15.4 从流或数据库读取及写入图像 15.5 创建自绘制的列表控件 总结 附录A .NET中的异常处理

    《构建高质量的C#代码》.(曹化宇).pdf

    《构建高质量的c#代码》主要内容包括c#的基本语法、结构与应用特点,常用开发资源与技术要点,设计模式在c#中的应用等,以及特别重要的一点,即我们应该养成良好的开发习惯,不仅要注重技术细节,还要从更宽阔的视野...

    《程序设计大学教程试读》PDF版

    本书以Delphi语言为载体,通过讨论程序设计的一般过程和方法,重点讲述程序设计基础、算法与结构化程序设计、面向对象程序设计、Windows程序设计和数据库程序设计的知识,并涉及计算机科学基础、数据和控制、程序...

    编写高质量代码之C#、C++_nodrm.azw3

    《编写高质量代码:改善c#程序的157个建议》一共三个部分,第一部分专注于c#语言本身,一共89条建议,涵盖了c#语言基本要素、集合、linq、泛型、委托、事件、资源管理、序列化、异常处理、异步、多线程、任务和并行...

    《编写高质量代码:改善c#程序的157个建议》第1章和第6章

    本书是一本关于如何编写高质量C#代码的工具书,列举的问题非常典型,给出的建议也非常实用,其中的每一条建议都有可能在我们编写下一行代码的时候用到。你可以将此书搁置在案头,以便有需要的时候随时查阅。

    .NET设计规范约定 惯用法与模式

    遵守这些规范对于使用.NET Framework创建高质量的应用程序至关重要。  本书提供配套光盘,内含Designing .NET Class Libraries等13个演讲视频。此外,光盘还包括.NET Framework类和组件设计指南、API规范样例以及...

    .NET设计规范:约定、惯用法与模式(第2版)克瓦林纳 3/5

    遵守这些规范对于使用.NET Framework创建高质量的应用程序至关重要。  本书提供配套光盘,内含Designing .NET Class Libraries等13个演讲视频。此外,光盘还包括.NET Framework类和组件设计指南、API规范样例以及...

    .NET设计规范:约定、惯用法与模式(第2版)克瓦林纳 4/5

    遵守这些规范对于使用.NET Framework创建高质量的应用程序至关重要。  本书提供配套光盘,内含Designing .NET Class Libraries等13个演讲视频。此外,光盘还包括.NET Framework类和组件设计指南、API规范样例以及...

    .NET设计规范:约定、惯用法与模式(第2版)1/5

    遵守这些规范对于使用.NET Framework创建高质量的应用程序至关重要。  本书提供配套光盘,内含Designing .NET Class Libraries等13个演讲视频。此外,光盘还包括.NET Framework类和组件设计指南、API规范样例以及...

    .NET设计规范:约定、惯用法与模式(第2版)克瓦林纳 5/5

    遵守这些规范对于使用.NET Framework创建高质量的应用程序至关重要。  本书提供配套光盘,内含Designing .NET Class Libraries等13个演讲视频。此外,光盘还包括.NET Framework类和组件设计指南、API规范样例以及...

    .NET设计规范:约定、惯用法与模式(第2版)克瓦林纳 2/5

    遵守这些规范对于使用.NET Framework创建高质量的应用程序至关重要。  本书提供配套光盘,内含Designing .NET Class Libraries等13个演讲视频。此外,光盘还包括.NET Framework类和组件设计指南、API规范样例以及...

    NET设计规范-.NET约定、惯用法与模式.part1

    本书为框架设计师和广大开发人员设计高质量的软件提供了权威的指南。书中介绍了在设计框架时的最佳实践,提供了自顶向下的规范,其中所描述的规范普遍适用于规模不同、可重用程度不同的框架和软件。这些规范历经.NET...

    高质量C++编程思想

    本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象... 本书作为正式教材和自学用书均非常优秀,作为程序设计者的参考用书亦极为合适。

Global site tag (gtag.js) - Google Analytics