java——异常介绍

时间:2021-09-21 03:26:42   收藏:0   阅读:18

异常分类

技术分享图片

 

Java中的异常层次结构

如果出现RuntimeException异常,那么就一定是你的问题

声明异常

throws ...

public class ThrowableTest {
    //根据给定的参数获取一个FileInputStream对象,并进行接下来的操作
    public void getFileInputStream(String name) throws FileNotFoundException {
        //...
    }
}

注:不需要声明Java的内部错误,即从Error继承的异常,因为我们对此完全无法控制。同样,也不应该声明从RuntimeException继承的那些非检查型异常,这些运行时错误完全在我们的控制之中,应该多花时间修正错误,而不只是生命这些有可能发生的错误

如果发生异常,该方法将不会得到一个FileInputStream对象,而是抛出声明的异常

抛出异常

throw ...

/*可以感觉到EOFException的用意,因为我们可以往流中放入null值,所以我们没法找到一个不
可能的值来表示到达流的末尾,所以只能通过抛异常的方式来告诉用户到达末尾了*/
public void readDate(Scanner in) throws EOFException{
        int index = getStream();
        if(index<0){
            throw new EOFException();
        }
    }

一旦方法抛出了异常,这个方法就不会返回到调用者

捕获异常

try/catch

public void read(String filename){
        try{
            InputStream in = new FileInputStream(filename);
            int b;
            while ((b=in.read())!=-1){
                //process input
            }
        }catch (IOException exception){
            exception.printStackTrace();
        }
    }

要捕获那些你知道如何处理的异常,而继续传播那些你不知道怎样处理的异常

finally

public void read(String filename){
        InputStream in = null;
        try{
            in = new FileInputStream(filename);
            int b;
            while ((b=in.read())!=-1){
                //process input
            }
        }catch (IOException exception){
            exception.printStackTrace();
        }finally {
            try {//内层try语句块只有一个职责,就是确保关闭输入流,并报告finally子句中可能出现的错误
                in.close();
            }catch (IOException e){
                e.printStackTrace();
            }
        }
    }

在实际中,try-with-resources语句可能比finally子句更常用

原文:https://www.cnblogs.com/isclay/p/15311870.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!