​一、处理异常的两种方式

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");

  }

}

异常出现了就一层一层往上抛。

再看一下使用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("出现了异常");

    }

  }

三、源码:

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.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

Java连载62-使用throws关键字处理异常的更多相关文章

  1. 【Java学习笔记之三十二】浅谈Java中throw与throws的用法及异常抛出处理机制剖析

    异常处理机制 异常处理是对可能出现的异常进行处理,以防止程序遇到异常时被卡死,处于一直等待,或死循环. 异常有两个过程,一个是抛出异常:一个是捕捉异常. 抛出异常 抛出异常有三种形式,一是throw, ...

  2. java run()方法无法throws 异常

    感谢大佬:https://blog.csdn.net/z_ssyy/article/details/95345205 其实原因很简单,run()方法是我们调用start()方法后,jvm再去调用run ...

  3. 浅谈Java的throw与throws

    转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...

  4. 再探Java基础——throw与throws

    http://blog.csdn.net/luoweifu/article/details/10721543 异常处理机制 异常处理是对可能出现的异常进行处理,以防止程序遇到异常时被卡死,处于一直等待 ...

  5. Java之旅(一)---说说“异常”那些事

     从開始学习VB,就听说过"异常",认为异常处理就是加上try..catch,不让错误抛出给用户,到此为止,不要再往下问了,再问也不会了.这就是那时候的理解.如今随时项目经验的 ...

  6. java中IO流操作的标准异常类

    package 加入异常处理的字节流操作; import java.io.FileNotFoundException; import java.io.FileOutputStream; import ...

  7. 黑马程序员——【Java基础】——面向对象(二)异常机制、包(Package)

    ---------- android培训.java培训.期待与您交流! ---------- 一.异常机制 (一)异常概述 1.异常:就是程序在运行时出现不正常情况. 2.异常类:程序在运行时,出现的 ...

  8. 【Java基础】10、Java中throw和throws的区别

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常  ...

  9. java之throw和throws

    抛出异常有三种形式,一是throw,一个throws,还有一种系统自动抛异常.下面它们之间的异同. 一.系统自动抛异常 当程序语句出现一些逻辑错误.主义错误或类型转换错误时,系统会自动抛出异常:(举个 ...

随机推荐

  1. 2019-9-17:渗透测试,基础学习,apache初识,mysql初识等笔记

    python -m SimpleHTTPServer gedit 文本编辑器 apache2 默认配置文件目录:/etc/apache2/apache2默认首页源码: /var/www/html my ...

  2. 从面试官甄别项目经验的角度,说说如何在简历中写项目经验(java后端方向)

    在大多的JD(职位介绍)里,会写明该职位需要xx时间的相关经验,换句话说就是需要在简历中看到一定年限的相关商业项目经验,否则估计连面试的机会都没. 在本文里,不讨论这种门槛是否合理,而会以Java相关 ...

  3. Linux(CentOS7)修改默认yum源为国内的阿里云、网易yum源

    修改方式: echo 备份当前的yum源 mv /etc/yum.repos.d /etc/yum.repos.d.backup4comex echo 新建空的yum源设置目录 mkdir /etc/ ...

  4. MySQL数据库day20190922

    1.dos命令 set names gbk; 2.MySQL练习#创建school数据库: create database school;#切换school数据库: use school; # pri ...

  5. python 3 mro

    __mro__ 1.只有在python2中才分新式类和经典类,python3中统一都是新式类 2.在python2中,没有显式的继承object类的类,以及该类的子类,都是经典类 3.在python2 ...

  6. 重新调用 layoutSubview

    重新调用 layoutSubview

  7. 3分钟了解ServiceStage 应用智能化运维【华为云分享】

    [摘要] 微服务云应用平台(ServiceStage)是面向企业及开发者的一站式DevOps平台服务,支持基于微服务的应用开发.治理.部署及运维监控的全生命周期管理,并提供大规模容器集群管理及中间件服 ...

  8. 简单http和https服务器python脚本

    欢迎加入python学习交流群 667279387 工作经常要用到测试http和https协议,这里写了两个简单的脚本实现简单的http服务器和https服务器. http服务器代码 import s ...

  9. Python文章相关性分析---金庸武侠小说分析-2018.1.16

    最近常听同事提及相关性分析,正巧看到这个google的开源库,并把相关操作与调试结果记录下来. 输出结果: 比较有意思的巧合是黄蓉使出打狗棒,郭靖就用了降龙十八掌,再后测试了名词的解析. 小说集可以百 ...

  10. 打样ov9650,无一幸免,失败告终,之调试记录

    新打样的ov9650,焊接了4块,其中只有2块有反应,另外两块无反应,于是使用热风台助焊,调试 助焊无效,怀疑焊盘有问题,于是拆掉 有问题的图像不正常 已看图像,只知道缺位,于是使用示波器检查,发现d ...