异常的抛出,就是将异常抛给异常处理器,暂时不去处理它。
摘要:《Java程序员面试指南》第7章异常处理及内存管理,本章讲述的是要想成功地成为一名合格的Java程序员,掌握好异常处理机制是编写大型程序必不可少的基本功。本节为大家介绍异常的处理方式之三:throw。
标签:throw Java 程序员 Java程序员面试指南
Oracle帮您准确洞察各个物流环节
7.4 异常的处理方式之三:throw(1)
异常的抛出,就是将异常抛给异常处理器,暂时不去处理它。本节主要讲解用throw抛出异常的方式,以及如何由try-catch来接收所抛出的异常。
当一个方法发生异常时可以通过throw关键字来抛出异常,把异常抛给它上一级的调用者,抛出的可以是异常引用,也可以是异常对象,它的语法格式如下:
throw 异常对象名; 或者
throw new 异常类名(); 一条throw语句一旦被执行,程序立即转入相应的异常处理程序段,它后面的语句就不再执行了(这一点类似于return语句),而且它所在的方法也不再返回有意义的值。在一个方法中,throw语句可以有多条,但每一次最多只能执行其中的一条。在一般情况下,throw语句都会写在判断语句块中,以避免每次都执行该语句。
【代码剖析】下面来看一个例子,也许从中你会明白点什么。具体代码如下:
public class catchThows { static int x; public static void main(String argv[]) { double a = Math.random() * 10; if (x > 0) System.out.println(a / x); else throw new Exception(); // 抛出异常 } public void setX(int x) { this.x = x; } } 运行结果如图7.1所示。
(点击查看大图)图7.1 运行结果
从上面的运行结果中可以看出,一个方法中如果使用throw来抛出异常,要么自己捕获它,要么声明抛出了一个异常。要声明抛出了异常,需要用throws关键字在方法的头部声明。如果我们将上面的代码修改成下面的代码,那么结果又会怎样呢?
public class catchThows_1 { static int x; public static void main(String argv[]) { new catchThows().setX(0); double a = Math.random() * 10; if (x > 0) System.out.println(a / x); else try { throw new Exception();// 抛出异常 } catch (Exception e) { System.out.println("出现异常的原因是:"+e.getMessage()); } } public void setX(int x) { this.x = x; } } 运行结果如下:
出现异常的原因是:null 还有一种抛出异常的方法是让被调用的方法表示它将不处理异常,该异常将被抛出到它的调用方法中。这点是和throws声明异常很相似的,但它们的位置是完全不同的。具体代码如下:
public class catchThows_2 { void findThows() { try { //抛出方法 throw new ArithmeticException(); } catch(ArithmeticException ae) { throw ae; } } public static void main(String args[]) { catchThows ct=new catchThows(); //对方法进行异常处理 try { ct.findThows(); } catch(ArithmeticException ae) { System.out.println("出现异常的原因是:"+ae); } } } 运行结果如下:
出现异常的原因是:java.lang.ArithmeticException
【责任编辑:云霞 TEL:(010)68476606】
回书目 上一节 下一节
上一篇: 7.3 异常的处理方式之二:throws(2) 下一篇: 7.4 异常的处理方式之三:throw(2)
相关文章
·7.5 内存的管理(2)
·7.4 异常的处理方式之三:throw(2)
·17.3 Java高级编程试题(1)
·17.1 Java基础编程试题(6)
·17.1 Java基础编程试题(5)
频道热门
·自己动手写搜索引擎
·1.1.2 编写代码(15分钟)
·1.1.1 准备工作环境(10分钟)
·软件调试的艺术
·WCF编程(第2版)
1. false
2. true
3. true
4. false
5. true
我只给你看了前面5道 你后面的标题都是错的
false 可以抛出系统异常
true System.in是一个输入对象
true 实现接口就必须实现接口里所有的方法
false InputStream类/OutputStream只是一种流,还有read和write流
true
false Applet可一是接口Interface
true
不记得了 好像notify 是线程同步里的 线程同步是synchronized
true
这个不知道
false
true 这是在cmd里先编译后运行的操作
true
false
true
false i是局部变量 要在if语句里打印
false float X=26f需转型
flase java里if括号中不可以有and,没有这种判断方法
false str为空 就不可以调用length()方法只有length属性
false
true java中字符串下标是从0开始数的
flase
false int类型的变量没有length()这个方法
true
false public boolean a(int i){ if(i>9){return false;}esle{return true}
true 抽象工厂设计模式就使用这中方式
true
true
false
true
true 容器是可以包含的 就像表单域里实现按钮什么的
false 构造方法的重载
true java中继承都是单继承多实现