JAVA开发 葵花宝典 16

JAVA开发 葵花宝典 16

ID:46172722

大小:274.50 KB

页数:12页

时间:2019-11-21

JAVA开发 葵花宝典 16_第1页
JAVA开发 葵花宝典 16_第2页
JAVA开发 葵花宝典 16_第3页
JAVA开发 葵花宝典 16_第4页
JAVA开发 葵花宝典 16_第5页
资源描述:

《JAVA开发 葵花宝典 16》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第16章异常与处理及内存管理本章将分为两部分进行讲述:一部分要详细的讲述异常及其处理方法;另一部分介绍Java程序中的内存管理。第一部分,几乎在所有的开发程序中都存在。而第二部分的知识,是为了让读者能清楚的知道,Java程序运行时和结束时,内存是怎么分配的。16.1异常的概念在以前的程序段中,经常会出现“try{}catch(exceptione){}”这样的语句。这就是本章重点要讲述的异常处理。为了让读者能循序渐进的掌握这一章,本节先讲述什么是异常,异常有哪几种。16.1.1异常的分类所谓的异常就是可以预见的错误。Java中所有的异常都从“

2、Throwable”类中继承。异常分为两个部分:一部分是错误,另一部分是异常。对于错误来说,只能终止程序。对于异常,又可以分为运行期异常和非运行期异常。一个运行期异常是由程序员自身的错误造成的。例如,一个越界的数组访问、一个空指针的访问等等。而这些异常被称为未检查异常,它们都不应该产生,除此之外,都属于已检查异常。(具体内容请参照本书)16.1.2异常的声明如何进行异常处理呢?首先了解异常是如何声明的,异常的声明是告诉Java编译器有一个异常出现了。在方法中,异常声明在方法的头部,利用关键字“throws”来表示此方法在运行的时候,很可能会出

3、现异常现象。下面先看一个例子。(具体内容请参照本书)16.1.3异常的抛出所谓异常的抛出,就是将异常抛给异常处理器,暂时不去处理它。如何处理它呢?这就依靠异常的捕获。关于异常的捕获在下节中会具体的讲述。言归正传,在上一小节中声明的内容,其实就是一个异常的抛出。还有一种异常的抛出,就是一直将异常不断的抛出而不去处理。这通过关键字“throw”来处理。下面看一个有关异常再抛出的模型。(具体内容请参照本书)16.2异常的捕获异常的抛出就是将异常抛给异常处理器,但没有告诉异常处理器需要如何处理。这是一个极其不负责任的表现,所以需要好好的处理异常现象,

4、在程序运行时就不会再出现异常报错。16.2.1捕获多个异常Java程序语言对于异常的处理,通过try和catch语句来实现。当有一个异常被抛到异常处理器后,通过try和catch语句对被抛出的异常进行捕获和处理。其语法结构如下:Try{可能会出现异常的程序段}catch(exceptione){捕获异常后,如何处理它}(具体内容请参照本书)16.2.2自定义异常用户自定义异常通过扩展Exception类来创建。这种异常类可以包含一个“普通”类所包含的任何东西。下面就是一个用户定义异常类的例子,它包含一个构造函数、几个变量和方法。(具体内容请参

5、照本书)16.3内存的管理和回收使用Java无需担心如何销毁对象。换句话说,就是Java运行时,无需负责Java对象的内存管理。当Java不再使用某个对象时,它会自动进行垃圾回收。垃圾回收是一个比较复杂的过程,当程序运行时会自动检查整个内存,检查内存中哪些对象引用不再被使用。一旦检查出来后,便会安全删除这些对象。然而,由于垃圾回收需要占用系统的资源,所以它可能会影响应用程序代码的运行,即如果在执行应用程序代码的过程中,执行垃圾回收,则应用程序代码的执行时间可能延长,这会导致程序运行的延迟。由于不知道何时会进行垃圾回收,因此延迟的时间也是不可预

6、知的。(具体内容请参照本书)16.4常见疑难解答(具体内容请参照本书)16.4.1为什么要声明方法抛出异常答:方法是否抛出异常与方法返回值的类型一样重要‘假设方法抛出异常,却没有声明该方法将抛出异常,那么客户程序员可以调用这个方法。不编写处理异常的代码,那么,一旦出现异常,这就没有合适的异常控制器来解决。16.4.2为什么抛出的异常一定是已检查异常答:RuntimeException与Error可以在任何代码中产生。它们不需要由程序员显式的抛出,一旦出现错误,那么相应的异常会被自动抛出。而已检查异常是由程序员抛出的,这分为两种情况:程序员调用

7、会抛出异常的库函数(库函数的异常由库程序员抛出)、程序员自己使用throw语句抛出异常。遇到Error,程序员一般是无能为力的,遇到RuntimeException,那么一定是程序存在逻辑错误,要对程序进行修改(相当于调试的一种方法)。只有已检查异常才是程序员所关心的,程序应该抛出或处理已检查异常。覆盖父类某方法的子类方法,不能抛出比父类方法更多的异常。有时设计父类的方法时,会声明抛出异常,但实现方法的代码却并不抛出异常,这样做的目的就是,方便子类方法覆盖父类方法时可以抛出异常。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。