拾贝壳

走过的路
随笔 - 39, 文章 - 1, 评论 - 14, 引用 - 0
数据加载中……

关于异常Exception

1。什么是异常
   异常是一种状态,是程序出现了符合该异常条件的一种状态。因此,他也可以说成是一种条件。
2。为什么要捕获异常
  捕获异常是为了对程序中出现的某种状况进行处理。如果有异常而没有捕获,异常将会向上一层传播,最终导致线程在此中止。
3。什么是check异常和unchecked异常
  uncheck异常一般是RuntimeException.出现这类异常,编译器不会强制要用户去捕获(当然你可以捕获)。   编译器会强制要求用户对checked异常进行捕获并作出一定的处理。
4。为什么不推荐捕获顶层异常(Exception)
  程序中会发生各种各样的异常。除非你的程序是个终端(一个业务的终点),否则不推荐捕获顶层异常。
 在程序的中间环节捕获所有异常毫无意义,并有可能导致流程上的隐患。比如,出现某种异常后,期望线程就此结束,不去做下面的工作,但是如果在中间环节对顶层异常进行了非法处理,程序有可能会运行下去,将导致不可控的错误。
5。为什么要自定义异常
 自定义异常是为了设置异常链的起点。一般情况下,我们都是允许每个程序员看到所有的异常信息,这个时候大多数都是把下一层的异常直接重掷到上一层。然而在多层次的结构中,我们有时候需要隐藏底层异常(这种异常的信息很多,很枯燥),而给消费者提供一个更为直观的异常,这个时候我们需要自定义异常。有的异常类jdk已经给我们提供,比如常用的IllegalArgumentException。如果你想在此再作包装,你可以创建自己的异常类。如此,消费者将以此异常作为异常链的起点。
6。为什么要重掷异常
 重掷异常是处理异常的一种方式。在捕获了某种异常后,用户可能不希望在这一层做出裁决,或者即使做出了一定的处理,但仍然需要向上一层报告,因此需要重掷异常。
7。异常机制。
   一旦某个点发生异常,这个点下面和catch语句之间的代码将不会被执行。因此,异常是一种中止流程的很有效的机制。
   关于异常,在effective java中提到“异常转译”和“异常连接”的概念。本人倾向于用“异常转译”,前提是要配置log4j,并作详细的日志纪录。

posted on 2006-06-29 11:40 binge 阅读(1369) 评论(1)  编辑  收藏 所属分类: J2SE

评论

# re: 关于异常Exception  回复  更多评论   

我上大话西游2 每次都是说你当前环境保存信息不成功
2008-09-02 11:31 | 樊志程

只有注册用户登录后才能发表评论。


网站导航: