java异常处理原理及应用


  “捕捉(catch)”指当readline方法发生错误时截获该错误, 并处置和记录该成绩。 而“声明(declare)”指错误可能引发ioexception, 并通知调用该方法的任何代码:可能发生异常。

  若要捕捉异常, 必需添加一个特殊的“处置代码块”, 来接收和处置ioexception。 于是顺序改为如下:

  若不准备捕捉ioexception, 仅声明异常, 则要特别指定main方法可能出错, 而且特别说明可能发生ioexception。 于是顺序改为如下:

  java异常以及异常处置

  可将java异常看作是一类音讯, 它传送一些零碎成绩、故障及未按规则执行的举措的相关信息。 异常包含信息, 以将信息从运用顺序的一局部发送到另一局部。

  编译言语为何要处置异常?为何不在异常呈现地位随时处置详细故障?因为有时候我们需求在零碎中交流错误音讯, 以便依照统一的方式处置成绩, 有时是因为有若干处置成绩的可能方式, 但您不知道运用哪一种, 此时, 可将处置异常的义务委托给调用方法的代码。 调用者通常更能了解成绩来源的上下文, 能更好确实定恢复方式。

  肯定在运转的java运用顺序的一些类或对象中发生异常。 呈现故障时, “发送者”将发生异常对象。 异常可能代表java代码呈现的成绩, 也可能是jvm的相应错误, 或根底硬件或

  操作零碎的错误。

  异常本身表示音讯, 指发送者传给接收者的数据“负荷”。 首先, 异常基于类的类型来传输有用信息。 很多情况下, 基于异常的类既能识别故障本因并能更正成绩。 其次, 异常还带有可能有用的数据(如属性)。

  在处置异常时, 音讯必需有接收者;否则将无法处置发生异常的底层成绩。

  在上例中, 异常“发生者”是读取文本行的bufferedreader。 在故障呈现时, 将在readline方法中构建ioexception对象。 异常“接收者”是代码本身。 echoinputhandle运用顺序的try-catch结构中的catch块是异常的接收者, 它以字符串形式输入异常, 将成绩记录下来。

  java异常类的层次结构

  在我们从总体上了解异常后, 我们应该了解如何在java运用顺序中运用异常, 即需求了解java类的层次结构。

  肯定在运转的java运用顺序的一些类或对象中发生异常。 呈现故障时, “发送者”将发生异常对象。 异常可能代表java代码呈现的成绩, 也可能是jvm的相应错误, 或根底硬件或操作零碎的错误。

  异常本身表示音讯, 指发送者传给接收者的数据“负荷”。 首先, 异常基于类的类型来传输有用信息。 很多情况下, 基于异常的类既能识别故障本因并能更正成绩。 其次, 异常还带有可能有用的数据(如属性)。

  在处置异常时, 音讯必需有接收者;否则将无法处置发生异常的底层成绩。

  在上例中, 异常“发生者”是读取文本行的bufferedreader。 在故障呈现时, 将在readline方法中构建ioexception对象。 异常“接收者”是代码本身。 echoinputhandle运用顺序的try-catch结构中的catch块是异常的接收者, 它以字符串形式输入异常, 将成绩记录下来。

  java异常类的层次结构

  在我们从总体上了解异常后, 我们应该了解如何在java运用顺序中运用异常, 即需求了解java类的层次结构。

  肯定在运转的java运用顺序的一些类或对象中发生异常。 呈现故障时, “发送者”将发生异常对象。 异常可能代表java代码呈现的成绩, 也可能是jvm的相应错误, 或根底硬件或操作零碎的错误。

  异常本身表示音讯, 指发送者传给接收者的数据“负荷”。 首先, 异常基于类的类型来传输有用信息。 很多情况下, 基于异常的类既能识别故障本因并能更正成绩。 其次, 异常还带有可能有用的数据(如属性)。

  在处置异常时, 音讯必需有接收者;否则将无法处置发生异常的底层成绩。

  在上例中, 异常“发生者”是读取文本行的bufferedreader。 在故障呈现时, 将在readline方法中构建ioexception对象。 异常“接收者”是代码本身。 echoinputhandle运用顺序的try-catch结构中的catch块是异常的接收者, 它以字符串形式输入异常, 将成绩记录下来。

  java异常类的层次结构

  在我们从总体上了解异常后, 我们应该了解如何在java运用顺序中运用异常, 即需求了解java类的层次结构。

  在java中, 一切的异常都有一个共同的祖先throwable(可抛出)。 throwable指定代码中可用异常传达机制经过java运用顺序传输的任何成绩的特性。

  throwable有两个重要的子类:exception(异常)和error(错误), 二者都是java异常处置的重要子类, 各自都包含大量子类。

  exception(异常)是运用顺序中可能的可预测、可恢复成绩。 普通大少数异常表示中度到轻度的成绩。 异常普通是在特定环境下发生的, 通常出如今代码的特定方法和操作中。 在echoinput类中, 当试图调用readline方法时, 可能呈现ioexception异常。

  error(错误)表示运转运用顺序中较严重成绩。 大少数错误与代码编写者执行的操作无关, 而表示代码运转时jvm(java虚拟机)呈现的成绩。 例如, 当jvm不再有继续执行操作所需的内存资源时, 将呈现outofmemoryerror。

  在java运用顺序中, 对异常的处置有两种方式:处置异常和声明异常。

  若要捕捉异常, 则必需在代码中添加异常

  JAVA处置器块。 这种java结构可能包含3个局部,

  try块:将一个或许多个语句放入try时, 则表示这些语句可能抛出异常。 编译器知道可能要发生异常, 于是用一个特殊结构评价块内一切语句。

  catch块:当成绩呈现时, 一种选择是定义代码块来处置成绩, catch块的目的便在于此。 catch块是try块所发生异常的接收者。 根本原理是:一旦生成异常, 则try块的执行中止, jvm将查找相应的jvm。

  finally块:还可以定义finally块, 无论运转try块代码的后果如何, 该块外面的代码一定运转。 在常见的一切环境中, finally块都将运转。 无论try块是否运转完, 无论是否发生异常, 也无论是否在catch块中得到处置, finally块都将执行。

  必需遵照块顺序:若代码同时运用catch和finally块, 则必需将catch块放在try块之后。

  catch块与相应的异常类的类型相关。

  一个try块可能有多个catch块。 若如此, 则执行第一个匹配块。

  除了下列情况, 总将执行finally做为完毕:jvm过早终止(调用system. exit(int));在finally块中抛出一个未处置的异常;计算机断电、失火、或遭遇
文章由淘宝缩阴产品排行榜整理,收集辛苦,希望能保留出处。

posted on 2011-05-12 00:10  jiyizhen3721  阅读(226)  评论(0编辑  收藏  举报