Java中异常的基本应用(一)

  在Java中,我们把异常当做一种对象来处理,正是异常机制的引入,使得我们的程序更加健壮。异常指示了一个不正常的条件,或者一个错误条件,简单地说就是一个中断了正常的指令流的事件。程序控制将无条件的抛至一个特定的代码段,在此将捕获异常并加以处理,由此将错误处理与程序的正常处理分离开来,错误就可以被单独处理了。

  异常由Exception类及其子类的实例表示,大多数包都定义了自己的异常类型,它们往往是Exception的子类,我们也可以自己定义异常的类型。当错误条件出现时,应有一段代码用来创建异常对象。Exception对象要作为一个参数传递给负责处理的代码块,这就涉及到异常的抛出和捕获。

  如图所示,可抛出的除了异常还有错误类。Error类通常指示一些重大的错误或者虚拟机错误,不应由程序捕获。至于异常则分为两类,分别是运行时异常和编译时异常,或者可以叫做unchecked异常和checked异常。我们通常会遇到的IO异常和SQL异常都属于checked异常,对于这种异常,编译器要求我们必须对其进行处理。而runtime exception则可以不作处理,由虚拟机来接管。

  出现异常时,要么直接处理,要么向上抛出,等待上层调用方法进行处理。如果始终没有得到处理,那么如果是多线程就由Thread.run()抛出,如果是单线程就由main()抛出,之后相应的线程或整个程序退出。Runtime Exception和Error都可以不做处理,因此程序在遇到此类错误时,如果没有处理块程序就会终止退出。

  异常的处理方式:

  1、try-catch-finally结构处理异常

try{
    //正常代码,包含可能出错的代码
    //如果有return,先走finally再回来return
}catch(异常类型 Exception e){
    //异常处理
}finally{
  //finally块,无论程序是否出现异常都会运行
  //异常的出口
}

  2、暂不处理,向上抛出

  throw用于手动抛出异常(系统无法识别的异常),throws进行声明,用于说明方法有可能发成的错误类型,调用该方法时进行try-catch处理。如果不声明,就需要在方法内进行try-catch处理。

public void setAge(int age) throws Exception{
    if(age>=15&&age<=40){
        this.age=age;
    }else{
        throw new Exception("年龄必须在15到40之间!");
    }

  该例在调用setAge方法时,进行try-catch处理,或者继续向上抛出。

时间: 2024-10-10 17:21:08

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中异常类与类别

异常类的层次结构: 在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出).Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性,它们都在java.lang包下面. Error类标记了严重错误,类似内存溢出,虚拟机异常,等等,是不该出现的.这些错误表示故障发生于虚拟机自身.或者发生在虚拟机试图执行应用时,如Java虚拟机运行错误(Virtual MachineError).类定义错误(NoClassDefFoundError)等.这些错