Java连载62-使用throws关键字处理异常

一、处理异常的两种方式
1.所有的编译时异常,要求程序员在编写程序阶段,必须对它进行处理,如果不处理的话,编译就会无法通过,处理异常有两种方法:捕捉和声明抛出。
2.捕捉:try…catch…
3.声明抛出就是方法声明的位置上使用throws关键字抛出异常。
4.所有RuntimeException的子类都是运行时异常,运行时异常程序员在编写阶段不需要对它进行处理。
5.编译时异常发生的几率比较高;运行时异常发生的几率比较低。
6.所有的Exception的直接子类都是“编译时异常”。
二、处理异常有两种方式
1.声明抛出 throws
2.捕捉 try…catch…
以下程序演示第一种方式:声明抛出,在方法声明的位置上使用throws关键字向上抛出异常。

package com.bjpowernode.java_learning;
import java.io.*;

public class D62_1_ {
  public static void main(String[] args) throws FileNotFoundException{
    //创建一个文件输入流,读取文件
    //java编译器是如何知道以下的代码在执行过程可能存在异常
    //java编译器是如何知道这个异常发生的几率比较高呢?
    //java编译器不是那么智能,因为FileInputStream这个构造方法在声明的位置上使用了
    //throws FileNotFoundException;
    //FileInputStream fls = new FileInputStream("C:\\Users\\lenovo1\\Desktop\\微信公众号运营-Java\\Java连载51-super关键字.docx");
//    try{
    m1();
      //使用throws处理异常是不是真正处理异常而是推卸责任
      //谁调用就会跑给谁
      //上面的m1方法如果出现了异常,因为采用的是向上抛出,给了JVM,JVM遇到这个异常
      //就会退出JVM,下面的这个代码不会执行
//    }catch(FileNotFoundException e) {
//      System.out.println("出现了异常");
//    }
  }
  public static void m1() throws FileNotFoundException{
    m2();
  }
  public static void m2() throws FileNotFoundException{
    m3();
  }
  public static void m3() throws FileNotFoundException{
    //FileNotFound构造方法声明位置上使用了throws(向上抛出)
    new FileInputStream("E:\\04.image\\timg.jpgu");
  }
}

62.1

异常出现了就一层一层往上抛。
再看一下使用try…catch…来处理这些异常

  public static void main(String[] args) {
    //创建一个文件输入流,读取文件
    //java编译器是如何知道以下的代码在执行过程可能存在异常
    //java编译器是如何知道这个异常发生的几率比较高呢?
    //java编译器不是那么智能,因为FileInputStream这个构造方法在声明的位置上使用了
    //throws FileNotFoundException;
    //FileInputStream fls = new FileInputStream("C:\\Users\\lenovo1\\Desktop\\微信公众号运营-Java\\Java连载51-super关键字.docx");
    try{
      m1();
      //使用throws处理异常是不是真正处理异常而是推卸责任
      //谁调用就会跑给谁
      //上面的m1方法如果出现了异常,因为采用的是向上抛出,给了JVM,JVM遇到这个异常
      //就会退出JVM,下面的这个代码不会执行
    }catch(FileNotFoundException e) {
      System.out.println("出现了异常");
    }
  }

62.2

三、源码:
D62_1_ThrowsOfException.java
https://github.com/ruigege66/Java/blob/master/D62_1_ThrowsOfException.java
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料
62.3

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值