(一)
关键字:throw throw 是一种控制程序流程的特殊方法而已。没有相应的
catch 的话,可以中止当前的方法继续执行。
关键字:throws 声明方法时候,如果不声明 throws 的话,那么一般的
Exception 都要在这个方法中终结,也就是说一定要有相应的 catch 处理,否
则编译时会产生错误。如果方法声明了 throws 的话,可以交给上一级方法去
处理。以此类推。但是有些 Exception 可以不加捕捉,编译也会通过。继承
Exception 类,可以自己定义 Exception,对于特定的状态,用 throw 抛出专
用的例外。这对于特定的 middle ware 开发,有一定帮助。
关键字:try、catch 用个形象的比喻,如果说 throws 相当于职业介绍中介
的话,那 try 和 catch 就是一对倒霉的打工仔。很有意思,throws 只是告诉编
译器--方法可能产生的异常问题,然后把问题处理抛给 try 和 catch。他们
一个负责发现异常关系,一个负责异常捕获。很辛苦的一对难兄难弟哦,:)
下面是一个不正确的例子。该例试图引发一个它不能捕获的异常。因为程序没
有指定一个 throws 子句来声明这一事实,程序将不会编译。
// This program contains an error and will not compile.
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 语句来捕获该
异常。
正确的例子如下:
// This is now correct.
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);
评论1
最新资源