2 throws关键字声明异常

throws

throws的作用是声明抛出异常,在方法声明的位置上使用throws关键字向上抛出异常。例如下面程序演示了一般性异常,编译无法通过,需要对异常进行处理

import java.io.FileInputStream;

public class ExceptionTest{

    public static void main(String[] args){
        //这句代码的意思是创建文件输入流,读取文件,遇到不认识的类可以查看API
        FileInputStream fis = new FileInputStream("d:/monkey1024.txt");

    }
}

可以使用throws将异常抛出

import java.io.*;

public class ExceptionTest {

    public static void main(String[] args) throws FileNotFoundException{
        //这句代码的意思是创建文件输入流,读取文件
        FileInputStream fis = new FileInputStream("d:/monkey1024.txt");

    }
}

jvm是怎么知道这个地方容易出现问题呢?来看下FileInputStream的源码

public FileInputStream(String name) throws FileNotFoundException {
    this(name != null ? new File(name) : null);
}

源码里面在构造方法上抛出了FileNotFoundException,所以jvm知道。

深入throws
其实使用throws抛出异常并不是真正的去处理异常,而是抛给其调用者去处理,比如你在工作中遇到问题了,交给了你的领导去解决,领导如果也不想解决就交给他的领导去解决。在上面程序里面,我们抛出了异常,最后是交给了jvm解决,jvm的解决方式就是将错误信息打印至控制台,然后关闭程序。
下面示例展示了将异常抛出的情况

import java.io.*;

public class ExceptionTest04{

    public static void main(String[] args) throws FileNotFoundException{

        //抛给调用者,如果都不进行处理的话,最终抛给了main方法
        m1();
    }

    public static void m1() throws FileNotFoundException{
        m2();
    }


    public static void m2() throws FileNotFoundException{
        m3();
    }

    //向上抛出异常
    public static void m3() throws FileNotFoundException{
        FileInputStream fis = new FileInputStream("c:/monkey1024.txt"); 
    }

}

这里不是说使用throws是不好,使用throws主要意图是暴露问题,如何解决让调用者去决定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值