在昨天的文章《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相关推荐

  1. java 向上抛异常_java throws 向上抛出的概念问题

    展开全部 ------------------附注------------------------ 向上抛出的意思 针对  子类 父类, 这里面涉及到几个方面,最重323131333532363134 ...

  2. java 捕捉的异常抛出_Java异常抛出和捕获

    Java中把非正常情况分为两种,异常(Exception)和错误(Error). 异常.png Error:一般是指与虚拟机相关的问题(虚拟机错误.线程死锁等),这种错误无法回复或不可能捕获 Exce ...

  3. java怎么捕捉除数异常_Java异常的捕获及处理---小总结

    一:异常的基本概念 二:异常的基本处理格式 三:异常的继承结构 四:Java的异常处理机制 五:throws和throw关键字的作用 六:Exception和RunntimeException的区别 ...

  4. java多层catch语句_Java异常之catch语句块

    今天在阅读项目代码时看到如下奇怪的代码,以为是竖线 | 可以作为多类型赋值,经过网上搜索才知道是Java SE 7新增的功能:一个catch捕获多种类型的异常.原文是Java官方的文档,现翻译如下.红 ...

  5. java try catch陷阱_java异常捕捉陷阱(内存泄漏,finally块,catch块,继承得到的异常)...

    1.    异常捕捉的陷阱 异常处理机制是java语言的特色之一,尤其是java语言的Checked异常,更是体现了java语言的严谨性:没有完善错误处理的代码根本不会被执行.对于Checked异常, ...

  6. java 异常处理的关键字_java异常,异常处理,异常类 关键字:throws 和 throw 自定义的异常类...

    packagecn.kecheng;importjava.util.Scanner;/**异常:异常是指在程序的运行过程中所发生的不正常的情况,它会中断正在运行的程序 异常处理机制:java中通过异常 ...

  7. java 回滚异常_Java异常与事物回滚探究

    非运行时异常(checke Exception)是RuntimeException以外的异常,类型上都属于Exception类及其子类.如IOException.SQLException等以及 用户自 ...

  8. java io的异常_Java 异常与IO流

    一.异常 想想一下代码会发生什么? public static voidmain(String[] args) {int a = 10;int b = 0; System.out.println(a/ ...

  9. java捕捉了异常_java 异常捕获与异常处理

    try{会产生异常的代码 }catch(出现异常的类型 e){ 异常出现后处理的方法 } 一旦异常出现又没有异常处理,程序就会中断. public static void main(String[] ...

最新文章

  1. python join 的使用
  2. 写给程序员的 18 幅对联,你能看懂几个?
  3. amd黑苹果万能显卡驱动_黑苹果系统安装之声卡驱动
  4. 简单理解kafka---入门
  5. “互联网+医疗健康” 行业调研报告
  6. 师范类专业物理和计算机选哪个,师范专业太多,哪些师范专业含金量高?资深教师:选这4个就对了...
  7. 文件流习题8.3 8.4
  8. Web Service 简单实例(java 版本) ,IDE自动生成客户端代码方法
  9. LeetCode 1034. 边框着色(BFS/DFS)
  10. 发送广播BroadcastReceiver
  11. python之cookbook-day03
  12. sql like 多个条件_都9012年啦,不懂得这些SQL语句优化,你是要吃大亏的
  13. 8月22日见!iQOO Pro跑分曝光:近50万得分 无对手
  14. javascript图片库威力增强版
  15. 天融信的FTP服务器
  16. linux/mac下一键删除下载失败的maven jar包
  17. idea java常用手册
  18. html特效文本框,各种html文本框input特效
  19. 使用Cisco Packet Tracer 搭建网络
  20. Android studio百度地图之定位到国外

热门文章

  1. 均衡原理_干货什么是负载均衡?负载均衡原理详解
  2. java中泛型上限,下限应用
  3. mysql join图解_MySQL中Join算法实现原理分析[多图]
  4. python手机编译器可以干什么_世界上最好的Python编辑器是什么?
  5. php如何对 mysql 中text类型拆分存入一个数组_PHP递归实现无限级分类,可选返回字符串和数组...
  6. php swoole 心跳,聊聊swoole的心跳
  7. UVA - 1339 ​​​​​​​Ancient Cipher
  8. New Bus Route
  9. Catch That Cow【广搜】
  10. 迟到的年度总结,我们应该收放自如