-
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
出 处:
https://www.cnblogs.com/ruigege0000/p/12071024.html
最新更新
带有参数的装饰器
类装饰器
django中的auth模块与admin后台管理
python的日期处理
字符串常用方法
基本数据类型概述
python-map()函数基本用法
python带你实现任意下载AcFun视频数据~
bbs项目之注册功能
变量的定义和使用
三大常用数据库事务详解之三:事务运行
三大常用关系型数据库事务详解之二:基
三大关系型数据库事务详解之一:基本概
MongoDB常用命令(2)
MongoDB基本介绍与安装(1)
SQLServer触发器调用JavaWeb接口
SQL Server索引的原理深入解析
SqlServer2016模糊匹配的三种方式及效率问题
SQL中Truncate的用法
sqlserver 多表关联时在where语句中慎用tri
VB.NET中如何快速访问注册表
ASP.NET中图象处理过程详解
Vue(1)Vue安装与使用
JavaScript 语言入门
js将一段字符串的首字母转成大写
纯原生html编写的h5视频播放器
H5仿原生app短信验证码vue2.0组件附源码地
TypeScript(4)接口
TypeScript(3)基础类型
TypeScript(2)WebStorm自动编译TypeScript配置