crying

crying

0个粉丝

41

问答

0

专栏

21

资料

crying  发布于  2008-12-26 11:44:26
采纳率 0%
41个问答
3328

java 例外

 
在学习java异常处理的时候,总是被这几个关键字搞的晕头转向,爬到网上找了些帖子和例子,好好理解一下他们的作用与区别:

关键字: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);

}

}

}





下面是例题的输出结果:



inside throwOne

caught java.lang.IllegalAccessException: demo  

                                     转自java2参考大全第四版
我来回答
回答0个
时间排序
认可量排序
易百纳技术社区暂无数据
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区