java 向上抛异常_Java 异常的处理方式throws
在昨天的文章《Java 异常的分类与处理》中我们简单地了解了一下在方法声明的位置上使用throws关键字向上抛出异常,下面深入讲解异常的第一种处理方式throws。
下面深入讲解异常的第一种处理方式throws。
看以下例子:
import java.io.*;
public class ExceptionTest04{
public static void main(String[] args){
m1();
}
public static void m1(){
m2();
}
public static void m2(){
m3();
}
public static void m3(){
new FileInputStream("c:/ab.txt"); //FileInputStream构造方法声明位置上使用throws(向上抛)
}
}
以上代码编译时出错:
ExceptionTest04.java:16: 错误: 未报告的异常错误FileNotFoundException; 必须对其进行捕获或声明以便抛出
new FileInputStream("c:/ab.txt");
按照提示修改之后:
import java.io.*;
public class ExceptionTest04{
public static void main(String[] args){
m1();
System.out.println("hello");
}
public static void m1(){
m2();
}
public static void m2(){
m3();
}
public static void m3() throws FileNotFoundException{
new FileInputStream("c:/ab.txt");
}
}
编译时出错;
ExceptionTest04.java:30: 错误: 未报告的异常错误FileNotFoundException; 必须对其进行捕获或声明以便抛出
m3();
由此看出,修改之后m3()运行时出现错误,上抛给m2(),以此类推,m2()上抛异常给m1(),m1()上抛异常给main()方法。
因此作出如下修改:
import java.io.*;
public class ExceptionTest04{
public static void main(String[] args) throws FileNotFoundException{
m1();
System.out.println("hello");
}
public static void m1() throws FileNotFoundException{
m2();
}
public static void m2() throws FileNotFoundException{
m3();
}
public static void m3() throws FileNotFoundException{
new FileInputStream("c:/ab.txt");
}
}
修改之后编译通过,但是System.out.println("hello")并不会执行。
从上面的例子中可以看出,使用throws处理异常不是真正处理异常而是推卸责任,谁调用就会抛给谁。上面的m1方法如果出现了异常,因为采用的是上抛,JVM遇到这个异常就会退出JVM,之后的代码不会执行。因此引入try...catch...方法。修改如下,编译运行通过,并且输出:hello。
import java.io.*;
public class ExceptionTest04{
public static void main(String[] args) throws FileNotFoundException{
try{
m1();
} catch(FileNotFoundException e){}
System.out.println("hello");
}
public static void m1() throws FileNotFoundException{
m2();
}
public static void m2() throws FileNotFoundException{
m3();
}
public static void m3() throws FileNotFoundException{
new FileInputStream("c:/ab.txt");
}
}
java 向上抛异常_Java 异常的处理方式throws相关推荐
- java 向上抛异常_java throws 向上抛出的概念问题
展开全部 ------------------附注------------------------ 向上抛出的意思 针对 子类 父类, 这里面涉及到几个方面,最重323131333532363134 ...
- java 捕捉的异常抛出_Java异常抛出和捕获
Java中把非正常情况分为两种,异常(Exception)和错误(Error). 异常.png Error:一般是指与虚拟机相关的问题(虚拟机错误.线程死锁等),这种错误无法回复或不可能捕获 Exce ...
- java怎么捕捉除数异常_Java异常的捕获及处理---小总结
一:异常的基本概念 二:异常的基本处理格式 三:异常的继承结构 四:Java的异常处理机制 五:throws和throw关键字的作用 六:Exception和RunntimeException的区别 ...
- java多层catch语句_Java异常之catch语句块
今天在阅读项目代码时看到如下奇怪的代码,以为是竖线 | 可以作为多类型赋值,经过网上搜索才知道是Java SE 7新增的功能:一个catch捕获多种类型的异常.原文是Java官方的文档,现翻译如下.红 ...
- java try catch陷阱_java异常捕捉陷阱(内存泄漏,finally块,catch块,继承得到的异常)...
1. 异常捕捉的陷阱 异常处理机制是java语言的特色之一,尤其是java语言的Checked异常,更是体现了java语言的严谨性:没有完善错误处理的代码根本不会被执行.对于Checked异常, ...
- java 异常处理的关键字_java异常,异常处理,异常类 关键字:throws 和 throw 自定义的异常类...
packagecn.kecheng;importjava.util.Scanner;/**异常:异常是指在程序的运行过程中所发生的不正常的情况,它会中断正在运行的程序 异常处理机制:java中通过异常 ...
- java 回滚异常_Java异常与事物回滚探究
非运行时异常(checke Exception)是RuntimeException以外的异常,类型上都属于Exception类及其子类.如IOException.SQLException等以及 用户自 ...
- java io的异常_Java 异常与IO流
一.异常 想想一下代码会发生什么? public static voidmain(String[] args) {int a = 10;int b = 0; System.out.println(a/ ...
- java捕捉了异常_java 异常捕获与异常处理
try{会产生异常的代码 }catch(出现异常的类型 e){ 异常出现后处理的方法 } 一旦异常出现又没有异常处理,程序就会中断. public static void main(String[] ...
最新文章
- python join 的使用
- 写给程序员的 18 幅对联,你能看懂几个?
- amd黑苹果万能显卡驱动_黑苹果系统安装之声卡驱动
- 简单理解kafka---入门
- “互联网+医疗健康” 行业调研报告
- 师范类专业物理和计算机选哪个,师范专业太多,哪些师范专业含金量高?资深教师:选这4个就对了...
- 文件流习题8.3 8.4
- Web Service 简单实例(java 版本) ,IDE自动生成客户端代码方法
- LeetCode 1034. 边框着色(BFS/DFS)
- 发送广播BroadcastReceiver
- python之cookbook-day03
- sql like 多个条件_都9012年啦,不懂得这些SQL语句优化,你是要吃大亏的
- 8月22日见!iQOO Pro跑分曝光:近50万得分 无对手
- javascript图片库威力增强版
- 天融信的FTP服务器
- linux/mac下一键删除下载失败的maven jar包
- idea java常用手册
- html特效文本框,各种html文本框input特效
- 使用Cisco Packet Tracer 搭建网络
- Android studio百度地图之定位到国外
热门文章
- 均衡原理_干货什么是负载均衡?负载均衡原理详解
- java中泛型上限,下限应用
- mysql join图解_MySQL中Join算法实现原理分析[多图]
- python手机编译器可以干什么_世界上最好的Python编辑器是什么?
- php如何对 mysql 中text类型拆分存入一个数组_PHP递归实现无限级分类,可选返回字符串和数组...
- php swoole 心跳,聊聊swoole的心跳
- UVA - 1339 ​​​​​​​Ancient Cipher
- New Bus Route
- Catch That Cow【广搜】
- 迟到的年度总结,我们应该收放自如