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"); } }
异常出现了就一层一层往上抛。
再看一下使用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关键字处理异常的更多相关文章
- 【Java学习笔记之三十二】浅谈Java中throw与throws的用法及异常抛出处理机制剖析
异常处理机制 异常处理是对可能出现的异常进行处理,以防止程序遇到异常时被卡死,处于一直等待,或死循环. 异常有两个过程,一个是抛出异常:一个是捕捉异常. 抛出异常 抛出异常有三种形式,一是throw, ...
- java run()方法无法throws 异常
感谢大佬:https://blog.csdn.net/z_ssyy/article/details/95345205 其实原因很简单,run()方法是我们调用start()方法后,jvm再去调用run ...
- 浅谈Java的throw与throws
转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...
- 再探Java基础——throw与throws
http://blog.csdn.net/luoweifu/article/details/10721543 异常处理机制 异常处理是对可能出现的异常进行处理,以防止程序遇到异常时被卡死,处于一直等待 ...
- Java之旅(一)---说说“异常”那些事
从開始学习VB,就听说过"异常",认为异常处理就是加上try..catch,不让错误抛出给用户,到此为止,不要再往下问了,再问也不会了.这就是那时候的理解.如今随时项目经验的 ...
- java中IO流操作的标准异常类
package 加入异常处理的字节流操作; import java.io.FileNotFoundException; import java.io.FileOutputStream; import ...
- 黑马程序员——【Java基础】——面向对象(二)异常机制、包(Package)
---------- android培训.java培训.期待与您交流! ---------- 一.异常机制 (一)异常概述 1.异常:就是程序在运行时出现不正常情况. 2.异常类:程序在运行时,出现的 ...
- 【Java基础】10、Java中throw和throws的区别
系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...
- java之throw和throws
抛出异常有三种形式,一是throw,一个throws,还有一种系统自动抛异常.下面它们之间的异同. 一.系统自动抛异常 当程序语句出现一些逻辑错误.主义错误或类型转换错误时,系统会自动抛出异常:(举个 ...
随机推荐
- CCNA 之 五 路由协议 一 静态路由
静态路由 路由选择原理 什么是路由? 就如同去某一个地方,会有很多种路线,每一条路线经都可以称之为路由: 路由器中会维护一张路由表,每一个表项都是一条路由,也就是去往某个网络的路径,然后将对应的数据包 ...
- 4、Docker 镜像构建
Docker 镜像构建 构建分为两种 手动构建 自动构建dockerfile 手动构建 首先启动一个Centos 容器,然后在容器中安装一个nginx [root@node ~]# docker ru ...
- typedef & #defiine & struct
#define(宏定义)只是简单的字符串代换(原地扩展),它本身并不在编译过程中进行,而是在这之前(预处理过程)就已经完成了. typedef是为了增加可读性而为标识符另起的新名称(仅仅只是个别名), ...
- Linux基础命令小技巧
总结 CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise L ...
- 一文读懂Python web框架和web服务器之间的关系
我们都知道 Python 作为一门强大的语言,能够适应快速原型和较大项目的制作,因此被广泛用于 web 应用程序的开发中. 在面试的过程中,大家或多或少都被问到过这样一个问题:一个请求从浏览器发出到数 ...
- mysql 授权用户 主从和备份
1.授权用户 mysql -uroot -p123qqq...A 进入数据库 grant all on *.* to dc@&q ...
- elasticSerach 知识学习
一 介绍: ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java语言开发的, ...
- Flink入门(四)——编程模型
flink是一款开源的大数据流式处理框架,他可以同时批处理和流处理,具有容错性.高吞吐.低延迟等优势,本文简述flink的编程模型. 数据集类型: 无穷数据集:无穷的持续集成的数据集合 有界数据集:有 ...
- 【JS】小工具
带天数的倒计时 function countDown(dateline){ var timer=null, //倒计时 current_time=Math.floor(new Date().getTi ...
- 167. 两数之和 II - 输入有序数组
给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2. 说明: 返回的下标值( ...