简单的异常处理

来源:互联网 发布:筑业标书制作软件 编辑:程序博客网 时间:2024/05/17 02:35

复习

第一章 异常处理

异常:运行时发生的错误

异常处理:处理这些异常

 

异常处理的方法

异常处理机制

1 Java运行时如果出现异常,会生成一个异常对象,

2 生成的异常对象传递给Java运行系统叫抛出异常

3 运行机制得到这个异常时,会寻找处理这个异常的   方法,如果找到方法,则会把当前的异常交给这个   方法处理,这叫做捕获异常

4 如果找不到方法来处理这个异常,则运行机制将会   停止,Java程序也会退出

 

Error错误

一般不能由程序员直接处理,必须要交由操作系统

运行时异常

RuntimeException运行时异常,java编译器允许程 序员不作处理

非运行时异常

除运行时异常其他的交由Exception继承来的异常

Java程序要求必须捕获或声明这种异常,否则编译 会报错

 

Try  catch  finally  throws  throws

Java 中允许的处理异常的方式

自行处理:可能引发异常的语句会封入在try块中

处理异常的语句会封入在catch

回避异常:在方法声明中包含throws语句,存在潜在   的异常,如果发生异常,则必须由调用者   来处理异常

 

Try...catch

形式一:最基本的异常处理

try{

     可能发生异常的代码块;

}catch(Exception e){

异常处理

}

补充:

catch块中的异常处理一般有两种形式

1.System.err.println();输出异常信息

2.e.printStackTrace(); 建议使用这种

在命令行打印异常信息在程序中出错的位置及原因

 

Finally

finally

形式二:如果有些代码无论发生什么情况都需要执行, 可以把这些代码放到finally块中

例如:数据库的关闭,网络的关闭等等....

try{

     可能发生异常的代码块;

}catch(Exception e){

异常处理代码块;

}finally{

一定需要执行的代码块;

}

 

注意:多重catch时,异常子类一定要位于异常父类之前

try{

   …...

} catch(Exception e) {

   ……

4 } catch(ArrayIndexOutOfBoundsException e) {//此处报错,因为前面catch可以捕获所有异常,此处代码没用

   ……

}

 

throws throw

区别

1、throws出现在方法函数头;而throw出现在函数体。
2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象。
3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。好的编程习惯:
1在写程序时,对可能会出现异常的部分通常要用try{...}catch{...}去捕捉它  并对它进行处理;
2try{...}catch{...}捕捉了异常之后一定要对在catch{...}中对其进行处理,那怕是最简单的一句输出语句,或栈输入e.printStackTrace();
3如果是捕捉IO输入输出流中的异常,一定要在try{...}catch{...}后加finally{...}把输入输出流关闭;
4如果在函数体内用throw抛出了某种异常,最好要在函数名中加throws抛异常声明,然后交给调用它的上层函数进行处理。

 

自定义异常

Java中的异常有时候不能被捕获,这时候需要我们自 己定义异常

注:自定义异常需要继承Exception及其子类

案例:

class MyException extends Exception{/自定义异常

public MyException(){

super("我自己定义的异常!");

}

}

public class TestException {

public static void main(String[] args){

try {

throw new MyException();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

 

 

 

 

 

原创粉丝点击