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

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. Dart Learn Notes 04

    流程控制语句 流程控制语句的作用就是控制代码的执行流程. if and else var a = 10; if(a > 10){ print('ok'); }else if( 5 < a ...

  2. Android最大方法数和解决方案

    转载请标明出处:http://blog.csdn.net/shensky711/article/details/52329035 本文出自: [HansChen的博客] 什么是64K限制和Linear ...

  3. MySQL 格式化时间 成字符串

    创建个表: CREATE TABLE `x02基本信息` ( `ID` varchar(32) NOT NULL COMMENT '系统内记录的唯一标识,供系统内部使用.', `名称` varchar ...

  4. 原生js删除增加修改class属性

    其实html5已经扩展了class操作的相关API,其中classList属性就以及实现了class的增删和判断. HTML DOM classList 属性 classList属性的方法有: add ...

  5. js中跳转的方法

    javascript中的location.href有很多种用法,主要如下. self.location.href="/url" 当前页面打开URL页面location.href=& ...

  6. kubectl exec 在kubelet中的处理流程

    基于kuebrnetes v1.17 简单来说,一个完整的streaming请求如下: 客户端 kubectl exec -i -t ... kube-apiserver 向 Kubelet 发送流式 ...

  7. Java学习笔记(面向对象上)

    面向对象(上) 面向对象的特点:封装性(是面向对象的核心思想,将对象的属性和行为封装起来).继承性(主要描述类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的功能进行扩展)和多态 ...

  8. socket实现一个简单的echo服务

    服务端的实现: public class EchoServer{ //创建一个serverSocket private final ServerSocket serverSocket; //创建一个构 ...

  9. 转:logback的使用和logback.xml详解

    一.logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch.它当前分为下面下个模块: logback-core:其它两 ...

  10. CentOS 6 编译 TensorFlow for Java 以及 Maven Pom

    我们的系统环境 CentOS 6.5, JDK 1.8 更新yum源 $ yum update 安装 Python 2.7 $ yum install python27 python27-numpy ...