java中异常介绍

一、异常概述

  异常处理已经成为衡量一门语言是否成熟的标准之一,目前的主流编程语言如C++、C#、Ruby、Python等,大都提供了异常处理机制。增加了异常处理机制后的程序有更好的容错性,更加健壮。

二、传统错误处理的缺陷

  –无法穷举所有异常情况:因为人类知识的限制,异常情况总比可以考虑到的情况多,总有“漏网之鱼”的异常情况,所以程序总是不够健壮。

  –错误处理代码和业务实现代码混杂:这种错误处理和业务实现混杂的代码严重影响程序的可读性,会增加程序维护的难度。

三、java的异常体系

四、异常信息

所有异常对象都包含了如下几个常用方法:

  –getMessage():返回该异常的详细描述字符串。

  –printStackTrace():将该异常的跟踪栈信息输出到标准错误输出。

  –printStackTrace(PrintStream s):将该异常的跟踪栈信息输出到指定输出流。

  –getStackTrace():返回该异常的跟踪栈信息。

五、finally

try
{
	需要检测的代码;
}
catch(异常类  变量)
{
	异常处理代码;
}
finally
{
	一定会执行的代码;
}

finally中的代码一定会执行,所以可以使用finally回收资源。

  程序在try块里打开了一些物理资源(例如数据库连接、网络连接和磁盘文件等),这些物理资源都必须显式回收。

  为了保证一定能回收try块中打开的物理资源,异常处理机制提供了finally块。不管try块中的代码是否出现异常,也不管哪一个catch块被执行,finally块总会被执行。

注:Finally代码块只有一种情况不会被执行。就是在之前执行了System.exit(0)。

六、多异常捕捉

在Java 7以前,每个catch块只能捕捉一个异常。但从Java 7开始,一个catch块可以捕捉多个异常。

catch(异常1 | 异常 2 | 异常3 ex)
{
}

  多个异常之间用竖线隔开。

  多异常捕捉时,异常变量之前有隐式final修饰。

七、异常跟踪栈

  异常对象的printStackTrace方法用于打印异常的跟踪栈信息,根据printStackTrace方法的输出结果,我们可以找到异常的源头,并跟踪到异常一路触发的过程。

  面向对象的应用程序运行时,经常会发生一系列方法调用,从而形成“方法调用栈”,异常的传播则与相反:只要异常没有被完全捕获(包括异常没有被捕获,或异常被处理后重新抛出了新异常),异常从发生异常的方法逐渐向外传播,首先传给该方法的调用者,该方法调用者再次创给其调用者……直至最后传到 main方法,如果main方法依然没有处理该异常,JVM会中止该程序,并打印异常的跟踪栈信息。

八、异常处理规则

  不要过度使用异常

  不要使用过于庞大的try块

  避免使用Catch All语句

  不要忽略捕获到异常

时间: 2024-10-26 15:48:51

java中异常介绍的相关文章

《java中异常和错误》

异常和错误的区别. 异常: 在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知你的一种方式,通过这种方式,VM让你知道,你(开发人员)已经犯了个错误,现在有一个机会来修改它.Java中使用异常类来表示异常,不同的异常类代表了不同的异常.但是在Java中所有的异常都有一个基类,叫做Exception. 错误:它指的是一个合理的应用程序不能截获的严重的问题.大多数都是反常的情况.错误是VM的一个故障(虽然它可以是任何系统级的服务

[转载]Java中异常的捕获顺序(多个catch)

http://blog.sina.com.cn/s/blog_6b022bc60101cdbv.html [转载]Java中异常的捕获顺序(多个catch) (2012-11-05 09:47:28) 转载▼ 标签: 转载 分类: 转载 原文地址:Java中异常的捕获顺序(多个catch)作者:leesa Java代码 import java.io.IOException; public class ExceptionTryCatchTest { public void doSomething(

java中异常注意的细节1

/* public class Test{ public static void main(String[] args){ int i=0; try{ func();//区别就是该函数抛出的异常被封装了,外界不知道到底会不会发生该异常 System.out.println("i = " + i++);//所以这句话是有机会执行的 }catch(Exception e){ System.out.println("i = " + i++); } } static voi

java中异常注意问题(发生在多态是的异常问题)

/* 异常的注意事项: 1,子类在覆盖父类方法时,父类的方法如果抛出了异常,那么子类的方法只能抛出父类的异常或者该异常的子类. 2,如果父类抛出多个异常,那么子类只能抛出父类异常的子集. 简单说:子类覆盖父类,只能抛出父类的异常或者子类或者子集. 注意:如果父类的方法没有抛出异常,那么子类覆盖时绝对不能抛.子类不能抛出比父类多的异常.就只能try...catch */ class A extends Exception{ A(String msg){ super(msg); } } class

java中异常注意的细节2

class A extends Exception{ A(){ super(); } A(String msg){ super(msg); } } class B extends A{ B(){ super(); } B(String msg){ super(msg); } } public class Test{ public static void main(String[] args){ try{ throw new B(); }catch(A e){ System.out.println

八、java中异常机制

一.为什么要有异常处理机制? java中的异常处理机制简单的讲就是try..catch..finally的使用. 程序难免会出现错误, 如果没有异常处理机制, 那么程序员在编写代码的时候就必须检查特定的结果, 并在程序的很多地方去处理它. 有了异常处理机制后,就不必在每个方法调用处都检查, 只需要用try包裹住可能发生异常的代码段, 这样做的好处是: 1.降低了代码的复杂度,正如上面所说的,不需要每个方法调用处都去检查: 2.将“描述正常情况下应该做什么事情”和“如果出了错怎么办” 的逻辑分开:

16 Java中异常的处理

JavaSE 基础之十六 16 Java中异常的处理 ① 异常的概念及分类 1. 异常的概念 异常指的是在运行期间出现的错误.(程序开始执行,在执行期内出现的问题.出现异常后要关注异常的类型以及异常出现的行号) 在Java中,Java的异常是Java提供的用于处理程序错误的一种机制. 异常处理机制:一旦异常发生以后,使用异常处理机制让程序不会直接中断或者影响虚拟机运行. 2.异常的分类 根基类:Throwable 子类:Exception.Error Exception: 用户的错误.或者程序无

java中异常分哪些种类:

java中异常分哪些种类: 一.Error .Runtime Exception 运行时异常 运行异常类对应于编译错误,它是指Java程序在运行时产生的由解释器引发的各种异常.运行异常可能出现在任何地方,且出现频率很高,因此为了避免巨大的系统资源开销,编译器不对异常进行检查.所以Java语言中的运行异常不一定被捕获.出现运行错误往往表示代码有错误,如:算数异常(如被0除).下标异常(如数组越界)等. 算术异常类:ArithmeticExecption 空指针异常类:NullPointerExce

Java Exception异常介绍

 一:介绍java异常 异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的异常.因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的 错误条件.当条件生成时,错误将引发异常. 在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出).Throwable 指定代码中可用异常传播机制通过 Java 应用程序