A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© onETT 中级黑马   /  2015-4-23 20:52  /  354 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.throws告诉了编译器方法可能产生异常问题,并把问题抛给了try/catch,让try/catch来负责捕获异常。 throws Exception是写在方法后面的,属于契约式编程,就是告诉编译器本方法可能会抛出该类型异常,由方法的调用者去处理。如果不想编写捕获异常的具体代码的话,使用 throws Exception 的形式, 把异常再次抛出,交给JVM(Java虚拟机)可以捕获。这是一种比较省事的办法。
2.当声明了throws之后,异常将会被抛出。但有些异常不能捕捉,这时候就要用到try/catch了。

下面是一个不正确的例子。该例试图引发一个它不能捕获的异常。因为程序没有指定一个throws子句来声明这一事实,程序将不会编译。

Java代码  收藏代码
class ThrowsDemo {  
static void throwOne() {  
System.out.println("Inside throwOne.");  
throw new IllegalAccessException("demo");  
}  
  
public static void main(String args[]) {  
throwOne();  
}  
}  
为编译该程序,需要改变两个地方。第一,需要声明throwOne( )引发IllegalAccessException异常。第二,main( )必须定义一个try/catch 语句来捕获该异常。
正确的例子如下:
Java代码  
class ThrowsDemo {  
static void throwOne() throws IllegalAccessException {  
System.out.println("Inside throwOne.");  
throw new IllegalAccessException("demo");}  
  
public static void main(String args[]) {  
try {  
throwOne();  
} catch (IllegalAccessException e) {  
System.out.println("Caught " + e);  
}  
}  
}  
下面是例题的输出结果:
inside throwOne
caught java.lang.IllegalAccessException: demo

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马