java学习随想--java的异常处理

来源:互联网 发布:制作文字图片的软件 编辑:程序博客网 时间:2024/05/22 09:04

概述

Java的异常处理机制使java程序更加健壮,不会因为一些异常的发生而使虚拟机退出。

Java异常处理机制能够在程序发生异常的时候,能够启动相应的程序对异常进行处理,使异常消除,让程序恢复正常状态,让程序能够继续下去,就算无法处理异常也要显示一些提示信息,以方便测试检验。

异常的父类

Java把异常当成对象来处理。

Throwable是所有异常类的超类,他有两个直接子类,ErrorException

异常的分类

Error是仅靠程序无法恢复的严重错误,比如虚拟机和系统错误,应用程序不应该对其进行捕捉。而Exception是应该被捕捉进行处理的异常。

异常处理方式

异常的处理有两种方式:

1

   try{}catch(XXXException e1){}catch(XXXException e2){}catch(XXXException                                    e3){}.....              

try{}语句块中填写可能会出现异常的语句。

       catch()里面的Exception类型应该按照子类到父类的顺序来排列。

catch(){}中填写相应的处理程序。

2

在方法声明时声明抛出这类异常,希望调用方可以对他进行处理,关键字throws后面跟上要抛出的异常类型,可以抛出多种异常,用逗号隔开。

异常抛出方式

在编写复杂的功能代码时,经常会发生一系列的方法调用,从而形成"方法调用栈",异常的传播规则相反:只要异常没有呗完全捕捉,异常从发生异常的方法逐渐向外传播,首先传给方法的调用者。

方法抛出异常时,方法会从栈上立即被取出,而异常会再度丢给栈上的方法,也就是调用方,如果调用方也将该异常抛出而不是try{}catch{}住,此时异常会再度抛给栈上的方法,如此一路下去直至扑捉住,如果连main方法将异常抛出不做处理,那么只好有jvm处理。也就是说异常会向上传递至调用方,,如果不捕捉而是抛出会一直传递下去,直至mainmain也没有try{}catch{}就抛给jvm

Exception分类

Exception类可以分为两种:

1、运行时异常

RuntimeException类及其子类都被称为运行时异常,这种异常的特点是Java编译器不去检查它,也就是说,当程序中可能出现这类异常时,即使没有用try...catch语句捕获它,也没有用throws字句声明抛出它,还是会编译通过。例如,当除数为零时,就会抛出java.lang.ArithmeticException异常。

2、受检查异常

除了RuntimeException 及其子类之外,其他的Exception类及其子类都属于受检查异常,这种异常的特点是要么用try...catch捕获处理,要么用throws语句声明抛出,否则编译不会通过

运行时异常表示无法让程序恢复运行的异常,通常是执行了错误的操作,一旦出现这种异常,程序应该终止。

自定义异常

java异常的设计者无法考虑到所有的异常类型,java程序员可以自己扩展异常类。例如扩展Exception

public class MyException extends Exception {

MyException() {}

MyException(String  message) {

super(message);

}

}

此时就可以使用自定义的MyException了。在适当时候抛出MyException,使用throw关键字抛出MyException对象。但是方法在用throw抛出自定义的Exception类型时,应该在方法声明处声明抛出MyException,否则编译出错。例如

Public class test {

public void go() throws MyException {

throw new MyException();

}

 

原创粉丝点击