java异常处理总结笔记

异常类型的继承关系

1. 所有异常类型的祖先类是Exception类,它有几个常用的函数:

Exception(String msg):构造异常对象,并将其提示信息设定为msg.

String getMessage():返回提示信息,也就是构造函数中设定的msg.

void printStackTrace():将异常跟踪栈信息打印在屏幕上。

用法举例:

try
{FileInputStream fis = new FileInputStream("a.txt");}
catch(IOException e)
{
    System.out.println(e.getMessage());
    e.printStackTrace();
}

2. Runtime Exception及其子类称为“runtime异常”,其余所有的异常统称为“checked异常”。


try,catch,finally关键字

try

{业务实现块}

catch(异常类型1 e)

{异常处理块1}

catch(异常类型2 e)

{异常处理块2}

...

finally

{资源回收块}

1. catch块和finally块是可选的,但是至少出现其中之一,不能都不出现。

2. 如果在try/catch中执行到退出jvm语句System.exit(1),则会立即终止程序,否则,无论是否出现异常,finally块都一定会被执行。

即使在try/catch中执行到了return/throw,也是转为立即执行finally块。如果在finally块中没有执行到return/throw,才返回来执行try/catch中的return/throw;如果在finally块中执行到了return/throw,则函数立即返回,try/catch中的return/throw根本没机会执行。


throws关键字

1. 如果函数本身不知道该如何处理某个异常,想交给父函数来处理,则可以在函数名后面加“ throws 异常类型1, 异常类型2...”。例如,

public static void test() throws IOException
{FileInputStream fis = new FileInputStream("a.txt");}

2. 主函数同样也可以用throws关键字将异常抛给jvm来处理,jvm处理的方式就是终止程序,打印异常跟踪栈信息。

3. checked异常要么用try...catch捕获,要么用throws捕获,如果都没有的话会编过不去;runtime异常可以不理会,这样它会被自动交给父函数来处理。


throw关键字

可以用“throw 异常对象”语句主动抛出异常。例如,

throw new Exception("a的值不能小于0");    //checked异常
throw new RuntimeException("a的值不能小于0");    //runtime异常


自定义异常类型

通过继承已有的异常类型来实现。例如,

public class MyException extends Exception
{
    public MyException(){}
    public MyException(String errMsg)
    {super(errMsg);}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值