JavaNOte 1.8异常

一、异常分类


error:系统错误,由Java虚拟机生成并抛出,包括动态链接失败、虚拟机错误等,程序对其不做处理。 exception:可以被处理的错误,所有异常的父类,一般需要用户显示声明或捕获。

runtimeException:运行时错误,如被0除、下标越界,一般不进行处理。

二、Throwable常用的方法

例:

//    public String getMessage();返回关于发生的异常的详细信息。这个消息在Throwable 类的构造函数中初始化了。
//    public Throwable getCause();返回一个Throwable 对象代表异常原因。
//    public void printStackTrace();//将此 throwable 及其追踪输出至标准错误流。
//    public void printStackTrace(PrintSteam s);
//    public void printStackTrace(PrintWriter s);
//    public Throwable fillInStackTrace();用当前的调用栈层次填充Throwable 对象栈层次
//    public StackTraceElement [] getStackTrace()返回一个包含堆栈层次的数组。下标为0的元素代表栈顶,最后一个元素代表方法调用堆栈的栈底。
//    public String toString()使用getMessage()的结果返回类的串级名字。
public class Test6 {
    int a[] = {2,3};
    public static void main(String args[]){
        Test6 test6 = new Test6();
        try {
            test6.f();
        }
        catch (ArrayIndexOutOfBoundsException e){
            System.out.print("1、这里调用的是printStackTrace()方法,打印异常堆栈信息");
            e.printStackTrace();
            System.out.println();
            for(int i = 0; i< e.getStackTrace().length;i++){
                System.out.println("这里调用的是public StackTraceElement [] getStackTrace()方法,将异常堆栈信息存在StackTraceElement数组中");
                System.out.println(e.getStackTrace()[i].toString());//这里调用public String toString()方法。
            }
            // 这个方法是为了追踪堆栈信息,一旦调用了此方法,就会返回一个Throwable对象用于填充新的堆栈信息,可以将注释去掉
            // 便能看到第二次的e.printStackTrace()方法只打印了main方法调用出的异常堆栈信息
//            e.fillInStackTrace();
//            e.printStackTrace();
        }
    }
    public void f(){
        for(int i = 0; i<a.length; i++){
            System.out.println(a[3]);
        }
    }
}
三、多重捕获

  
  
try{ // 程序代码}
catch(异常类型1 异常的变量名1){ // 程序代码}
catch(异常类型2 异常的变量名2){ // 程序代码}
catch(异常类型2 异常的变量名2){ // 程序代码}

如果保护代码中发生异常,异常被抛给第一个 catch 块。

如果抛出异常的数据类型与 ExceptionType1 匹配,它在这里就会被捕获。

如果不匹配,它会被传递给第二个 catch 块,直到异常被捕获或者通过所有的 catch 块

四、throw和throws

throw:抛出一个具体的异常,可以是自定义的,也可以是刚捕获的。

throws:可能会抛异常,通常用在方法后面。

注;重写方法,新方法不能抛出新的异常,必须与原方法一致或者检测异常范围更小或者不抛。


 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值