Java中异常和异常处理

(一)异常

1、异常结构

异常是程序运行过程中所发生的意外事件,它中断指令的正常执行

2、异常的类型

父类:Throwable
两个子类:Exception、Error

Error是程序无法处理的,如OutOfMemoryError,如果出现Error,java虚拟机会终止线程。

Exception又包括运行期异常和编译期异常
①运行期异常 常见的运行期异常有ArrayIndexOutOfBoundsException、NullPointerException
②编译期异常 常见的编译期异常有InterruptedException、ClassNotFoundException、NoSuchFieldException(反射中出现的异常)
在这里插入图片描述 上图为Java异常处理机制

(二)异常处理(一般针对编译期异常)----> 五个关键字

1、try关键字

将可能发生异常的代码放在try块中;
注意点:
1)一个try块对应多个catch块,对应一个finally;
2)如果try中存在多条可能会发生异常的代码A、B、C,如果A 发生异常,B、C语句不会被执行;
3)try块避免代码嵌套;

2、catch关键字

catch代码块中输入异常处理方式 ;
1)catch关心的异常;不关心的异常采用基类的引用,引用派生类的对象,父类处理;先用子类处理,再用父类处理;
2)尽量避免过分细化异常;

public class TestDemo{
    public static void main(String[] args) {
        int[] arr = {0};
        People p = null;
        try{
            arr[1] = 10;
            Thread.sleep(1000);
            Class c = Class.forName("zs");
        }catch(ArrayIndexOutOfBoundsException e){  //catch关心的异常;基类的引用,引用派生类的对象;先用子类处理,再用父类处理
            e.getStackTrace();
        }catch(Exception e){ //父类处理
            e.getStackTrace();
        }
    }
}

3、finally关键字

特点是:无论是否会发生异常必定会被执行到
异常处理格式

try{
//有可能出现异常的语句
}catch(异常类型 对象){
//异常处理
}catch(异常类型 对象){
//异常处理
}...
}catch(异常类型 对象){
//异常处理
}finally{
//不管是否出现异常,都执行为统一代码
}

4、throws关键字

在方法后面通过throws关键字+异常处理;
注意:多个异常通常由父类处理
例如:

public static void fun() throws InterruptedException {//一个异常的处理
    Thread.sleep(1000);
}
public static void fun() throws ClassNotFoundException,InterruptedException {//多个异常的处理
    Class c = Class.forName("People");
    Thread.sleep(1000);
}
public static void fun() throws Exception {   //多个异常由父类处理
    Class c = Class.forName("People");
    Thread.sleep(1000);
}

5、throw关键字

public class JavaDeom{
public static void main(String[] args){
try{
throw new Exception(.....);
   }catch(Exception e){
    e.printStackTrace
    }
  }
}

throw和throws关键字的区别:
throws:是在方法定义中使用,表示将此方法中可能产生的异常明确的告诉给调用处,由调用处处理;
throw:是在代码块中使用,主要是手动进行异常对象的抛出;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值