`
tianmo2008
  • 浏览: 67687 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java的异常一

    博客分类:
  • java
阅读更多
写java代码,异常用的很多,但以前没有系统的去研究过,今天正好面试被一道异常题搞倒了,回家就把异常看了下,补补基础。
java中的异常类特别多,但我们关心只是以下类图中的部分。
java异常类的体系层次结构


从上图可以看出,所有的java异常都是从Throwable类派生而来的,主要分成两个分支,Error和Exception。
而Error体系描述的是java运行系统中的内部错误,出现这种异常,程序员基本是无能为力的,Error体系并不是我们需要太多研究的对象。剩下的就是Exception体系。

从类图中看,Exception体系也被分成两个主要分支,分别是IOException体系和RunTimeException体系。
RunTimeException体系异常指的是人为的编写出不合理的代码而导致的,
这些不合理的代码包括一下情况:
1:错误的类型转换。
2:数组越界访问。
3:访问空指针。
当出现以上情况的异常是,都说明是人为的代码问题,既然是人为的异常,自然要人为去避免。例如,
if(item < array.length)
{
  System.out.println(t[item]);
}

我们事先判断要访问的元素是否超出了数组的长度,这样就能避免因为访问越界的数组而发生ArrayIndexOutOfBoundsException异常。
以上的Error体系和RunTimeException体系在java异常中都被称为未检查异常。除了这两个体系异常,其他异常都称为已检查异常

抛出异常
::当java中一个方法遇到自己无法处理的情况时,就应该抛出异常。

以下是java抛出一个异常的方法
public void fun_test()throws IOException
{
 //....
 throw new IOException();
}

通过先在方法名后面用throws来声明要抛出的异常,然后再在方法体内用
通过new IOException()创建异常对象,并用throw把他抛出。当有多个异常时,就用“,”分割开:
public void fun_test()throws IOException,AlreadyBoundException
{
 //....
 throw new IOException();

 //....
 throw new AlreadyBoundException();

}


对于已经捕获的异常,如果捕获处理后还需要往上抛出的话,也可以用throw关键字把他再出抛出,如
public void fun_test()throws IOException{
  try{
    //... 
  }catch(IOException e)
  {
    //..
    throw e
  }
}

上面代码中虽然对IOException异常进行了捕获,处理后在catch块里继续把它往外抛.

捕获异常
java是通过try/catch或try/atch/finally代码快来捕获异常的。
具体如下:
try{
  //....
}catch(Exception e)
{
  //....
}


try{
  //.......
}catch(Exception e)
{
  //.....
}finally{
  //......
}


try代码块里面抛出了异常,而这个异常又是catch里指定的异常类型,则程序会停止执行try块中剩下的代码,并跳出try代码块。转而执行catch块里面的代码,
如果try里没有出现异常,则程序会直接忽略catch代码块,如果try的任何代码出现异常,而这个异常又没有在catch里指定,则方法会立即退出。
注意::如果调用的方法声明了会抛出异常,必须对它的异常进行处理,要么通过try/catch捕获它并处理,要么声明会抛出该异常,把异常继续往上抛。
同样,如果所负责的业务逻辑没法对一个异常进行处理,最好就是把它往上抛,抛到有合适的地方再进行处理。

try/atch/finally
try/atch/finally代码快是先执行try块,如果try块没有异常,就接着执行finally块,如果try出现异常,则停止并跳出try块,转而执行catch里的代码,再接着执行finally块里的代码。
所以,不管try里有没有出现异常,finally块里的代码是一定会被执行的。但有点要注意
看下面代码:
public class ExceptionTest {
   /**
   * @param args
   */
   public static void main(String[] args) {
       // TODO Auto-generated method stub
       System.out.println(ExceptionTest.Exc());
   }
	
   public static String Exc()
   {
       try{
       int i = 20/0;
   }catch(Exception e)
   {
       System.out.println("出异常了");
       return "返回catch";//在catch块里我们把函数return
   }finally{
       System.out.println("finally执行了");
   }
     return "正常返回";
   }
}


打印的结果是:
出异常了
finally执行了
返回catch


结果很明显,虽然在catch有return语句,并且catch块是比finally先执行的,但程序是先执行finally里的代码,再执行catch里的return 语句返回的。
(今天面试遇到这题,我误以为是先catch里的语句,因为catch有return所以直接返回,不会执行finally了,怪自己基础不扎实)。
(先写到这,找时间继续)




  • 大小: 20.7 KB
分享到:
评论

相关推荐

    java异常处理习题

    Java 异常处理是 Java 编程语言中的一种重要机制,用于处理程序在运行时可能出现的错误或异常情况。下面是关于 Java 异常处理的习题和知识点总结: 一、Java 异常处理关键字 * Java 中用来抛出异常的关键字是 `...

    java 异常详解,java异常分类,创建自己的异常

    1. 抛出异常:在 Java 中,创建一个异常对象并把它送到运行系统叫做抛出异常。 2. 捕捉异常:在抛出异常后,运行系统将寻找合适的方法来处理异常。如果产生的异常类与所处理的异常类一致,则认为找到了合适的异常...

    高效的java异常处理框架高效的java异常处理框架高效的java异常处理框架

    本文将从 Java 异常的基本概念和语法开始,讲述 Java 异常处理的基本知识,分析 Java 异常体系结构,对比 Spring 的异常处理框架,阐述异常处理的基本原则,并提出了自己处理一个大型应用系统异常的思想,并通过设计...

    java异常机制小结

    Java 对异常的处理是按异常分类处理的,不同异常有不同的分类,每种异常都对应一个类型(class),每个异常都对应一个异常(类的)对象。 二、Java 异常的分类 Java 中的异常可以分为两大类:Error 和 Exception。...

    Java异常学习资料

    Java异常处理是Java编程语言中的一个关键特性,它允许程序员优雅地处理程序运行时出现的错误情况,确保程序的稳定性和可靠性。这份“Java异常学习资料”包含了丰富的资源,帮助你深入理解Java异常机制,提升代码质量...

    java异常 异常的概念 应用

    Java异常处理是编程中至关重要的一个环节,它关乎程序的健壮性和稳定性。在Java中,异常(Exception)被用来表示程序运行时发生的错误或不正常情况。异常并不等同于错误,它是程序设计的一部分,允许我们优雅地处理...

    Java异常处理体系

    这个主题,"Java异常处理体系",涉及到Java如何优雅地处理程序运行时的异常,确保程序的健壮性和稳定性。这篇博文链接(已提供但无法直接访问)可能详细解释了Java异常处理的基本概念、机制以及最佳实践。 Java异常...

    java学习之Java异常.ppt

    Java异常处理是编程中至关重要的一个环节,它确保了程序在遇到错误情况时能够优雅地进行错误恢复或者至少提供有用的错误信息。Java异常是程序在运行时遇到的问题,例如数组越界、空指针异常、文件未找到等,这些问题...

    Java异常框架设计

    1. **Java异常基础** Java中的异常是程序运行时发生的错误,它们通常由`Exception`类及其子类表示。Java提供了一个异常层次结构,其中`Throwable`是所有异常和错误的基类,包括`Error`和`Exception`。`Error`通常...

    Java异常分装实例

    在给定的“Java异常分装实例”中,我们可以学习如何创建自定义异常类、抛出和捕获异常,以及如何利用Java的异常层次结构。`exception_test`文件可能包含了一个或多个示例代码,用于演示这些概念。 首先,创建自定义...

    java 异常处理ppt

    Java异常处理是编程中至关重要的一个环节,它允许开发者优雅地处理程序运行时可能出现的错误,确保程序的健壮性和稳定性。Java中的异常处理机制基于一个独特的概念——异常(Exception),这是一种表示程序运行中...

    java异常处理ppt

    Java异常处理主要涉及以下几个核心概念: 1. **异常(Exception)**:异常是程序在执行过程中遇到的非正常情况,它中断了正常的执行流程。Java中的异常以对象的形式存在,这些对象通常是特定异常类的实例。异常分为...

    java 异常框架CODE

    Java异常框架是Java编程语言中处理程序运行时错误和异常的核心机制。在Java中,异常是一种特殊的对象,用于表示程序运行过程中的不正常状态。Java的异常处理模型基于\"异常处理块\",包括try、catch、finally和throw...

    Java异常处理终结篇——如何进行Java异常处理设计 - 望远的个人页面 - 开源中国社区1

    Java异常处理设计是Java编程中一个至关重要的环节,它直接影响到程序的稳定性和可维护性。在Java中,异常处理是通过try-catch-finally语句块来实现的,主要涉及两大类异常:编译时异常(Checked Exception)和运行时...

    Java异常处理,非常适合Java爱好者

    Java异常处理是Java编程语言中的一个关键特性,它允许程序员优雅地处理程序运行时可能出现的错误和不正常状况。在Java中,异常是程序执行过程中出现的问题,它们中断了正常的控制流程,使得程序无法继续按照预期的...

    java异常分析及解决办法

    Java异常处理是编程中至关重要的一个环节,它帮助开发者识别并修复程序运行时出现的问题。在Java中,异常是程序执行期间发生的不正常情况,通常会导致程序中断。下面将详细解释给定文件中提到的一些常见Java异常,并...

    java高端技术课程--Java异常处理详解

    Java异常处理是Java编程中一个至关重要的概念,它关乎到程序的健壮性和稳定性。在Java语言中,异常处理提供了一种机制,使得程序在遇到错误或非正常情况时能够优雅地处理问题,而不是突然崩溃。这个“java高端技术...

    java异常体系结构

    Java异常体系结构是Java语言的重要组成部分,它负责处理程序执行过程中出现的错误情况。在Java中,异常由Throwable类及其子类构成。Throwable是所有异常的顶层父类,它有两个直接子类:Error和Exception。Error类...

    java 异常处理 代码实例

    Java异常处理是编程中至关重要的一个环节,它确保了程序在遇到错误时能够优雅地运行,而不是突然崩溃。本篇文章将深入探讨Java异常处理的概念、机制以及如何通过代码实例进行有效的异常管理。 Java异常处理的核心...

Global site tag (gtag.js) - Google Analytics