java异常处理

1.异常的概述

1.异常的概念:在java程序中,异常是指程序运行的过程中,发生某些意外的事情。比如10/内存溢出等。异常是一个在程序运行执行期间发生的事件,它中断了正在执行的程序的正常交流
2.异常与错误的区别:异常是不正常的事件流,通过处理程序依然可以运行下去。但是错误是无法控制的,程序肯定要中断。

2.异常的体系

1.异常体系图
异常的体系图
此图表示的是异常的体系。从图中我们可以看出异常的父类为Throwable.并且异常下又有多种异常。
2.异常的分类:分为运行时异常(RuntimeException)和编译期异常(checkedoutException)。其中常见的RuntimeException的子类包括:NullpointerException、ClassCastException、ArrayindexOutOfBandsException等。而除了RuntimeException外的异常的类都可以统称为checkedoutException。常见的包括SQLException、IOException等。

3.异常的处理

1.在java中,异常的处理常用到的语句结构如下:

try{
可能会发生异常的语句块
}catch(异常类名 引用名){
对该异常的处理
}
【catch1(异常类名1 引用名1){
对该异常的处理
}

catch2(异常类名2 引用名2){
对该异常的处理
}
………………】
【其他代码块】
finally{
语句块
}

2.try-catch语句块
说明:如上所述,当try代码块中的语句发生异常,程序会转到catch代码块逐一执行,当catch代码块执行完之后,将继续执行catch代码块之后的代码。
结论:java的异常处理是结构化的,不会因为一个异常而影响整个程序的运行。
3.finally语句块
完整的异常处理语句一般都含有finally语句,无论程序中异常是否发生,且无论try-catch语句是否顺利执行完毕,都会执行finally语句。
以下几种情况将不执行finally语句块
1.程序所在的线程死亡。即return掉了所有的catch情况。
2.在前面的代码块中使用了System.exit()退出程序。

4.自定义异常

使用java内置的异常类可以描述大部分异常。除此之外,程序员也可以通过继承Exception类来自定义异常类。

程序中自定义异常类大体上分为以下几个步骤:
(1) 创建自定义异常类。
(2) 在方法中通过throw关键字抛出异常对象。
(3) 如果在当前抛出异常的方法中处理异常,可以使用try-catch语句块捕捉并处理,否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
(4) 在出现异常的方法调用者中捕获并处理异常。

即异常可以在本方法中抛出,在调用本方法时解决,但是需要说明异常
例如:

public class ThrowCasecade {

public void m1(){
    try {
        m2();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

private void m2() throws Exception {
    System.out.println("m2");
    try {
        m3();
    } catch (IOException e) {
        //转换为特定的异常,以便于上层调用的方法理解该异常
        e.printStackTrace();
        throw new Exception();
    }
}

private void m3() throws IOException {
    System.out.println("m3");
    m4();
}

private void m4() throws IOException {
    System.out.println("m4");
    m5();
}

private void m5() throws IOException {
    System.out.println("m5");
    throw new IOException("文件未找到");
}

public static void main(String[] args) throws IOException {
    new ThrowCasecade().m1();
}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值