java的规定:可能导字异常的语句你必须进行处理,有两处方式:一种是在所在方法后加上throws XXXExcetion,一种是try...来处理
一.概述
1。捕捉错误的时机
java的基本哲学是"糟糕的代码根本得不到执行'。
捕捉错误的最佳时机是 编绎的时候,也就是在程序运行之前。 但是有的问题只能等到程序运行的时候才能等到处理。 
2.早期的错误处理方案及缺陷
C语言及早期语言的错误处理的方案 都是建立在约定的基础上,错误处理本身并不属于语言。最常见的是设定标志位(略)。如果像这样,每次调用方法的时候 都作一次错误检查的话,那太麻烦,程序也无可读性。这种错误处理的方案 也已经成为创建大型的,强健的,可维护的程序的巨大障碍。3。现行解决方案
强化处理方案的规范性,摒性原有的随意性。
4."异常"的好处
A.一旦错误发生,程序就不会继续运行下去。
B.条理性:错误处理代码与一般的方法调用代码隔离开来;错误的处理集中在一起。
二.基本异常
概念:异常条件,运行环境,抛出异常,上次的运行环境。
4.异常条件:阻止正在运行的方法 继续下去的问题。
5.对于异常条件,你得不到足够的信息来处理这个问题,因此不能在当前的"运行环境'下运行下去。只能跳出当前的运行环境,并把问题交到上层的运行环境。这就是抛出异常时发生的事。6.抛出异常时发生的事情
A.首先创建一个异常对象,在堆里,用new。
B。停止当前的执行路径,将异常对象的reference从当前环境中弹出去。
C.现在异常处理机制开始接管程序,它会找一个合适的地方继续程序。这个地方就是异常处理程序(exception handler):其功能就是将程序从问题中恢复过来,于是程序尝试换一条路径,或者继续运行下去。7.异常的参数
所有的标准异常都有两个构造函数,一个是默认的构造函数,一个是要拿一个字符串作参数的构造函数。
例: 
  if x=null{
  throw new NullPointerException("x=null")
 }8.捕捉异常
守护区域(guarded region):这是一段可能产生异常的代码,并且后面跟着异常处理的代码。
A.try区块:
如果从方法里面抛出异常(或者是从这个方法调用的另一个方法里面抛出异常),那抛出异常的同时,这个方法会退出运行。
如果你不想被throw异常,则可以在这个方法的内部建立一个特殊的区块来捕获这个异常。这个区块被称为try区块。try区块;是跟在try关键字后面的程序块。B。异常处理程序
a抛出来的异常必须得到处理,这个地方就是 异常处理程序。异常处理程序跟在try区块后面,用关键字catch表示。
b.每条catch子句(异常处理程序)像是一个微型的, 并且有一个且仅有一个特定类型参数的方法。
c.异常处理程序的参数类型后面还跟一个标志符,有时参数的类型已经给出足够的信息,已经不需要这个标志符,但语法需要还是摆在那里呵。
d.如果程序抛出异常,则异常处理机制会进入 异常处理程序 并寻找 异常类型与之匹配的那些异常处理程序中第一个。然后进入那条catch语句,于是认为异常得到了处理。绝对不会执行多个catch。9。"中止"还是"继续"
理论上将异常模型分为两种:中止和继续。
A.中止:假如错误是非常严重,以致于你没有办法回到错误发生的地方。
B.继续:也就是说异常处理程序应该做些什么以修补当前的运行环境,然后重试上次出错的那个地方,它假设第二次运行此段代码能够成功。----在这种情况下,异常处理更像是在调用方法。另外一种方法是将try区块放在while循环里,这样会重复的运行try块,直到得到满意的结果。
实际上采用中止模式。继续模式难写,难实现。

解决方案 »

  1.   

    throwable是exception和error两个类的夫类。
    这段代码没什莫问题,但一般不这样写。另外,对于一般应用,try块应捕获exception的子类而不是throwable。
      

  2.   

    我也Up一下我也Up两下!!!
    ^@^
      

  3.   

    呵呵.很清楚啦.
    UPUPUPUPUPUP!
      

  4.   

    <<throwable是exception和error两个类的夫类>>这个“夫类”牛,丈夫?
    呵呵,玩笑。
      

  5.   

    xiaohaiz(老土进城,两眼通红) :笔误,呵呵!不过要真是夫类,可能是另一种高级语言。依赖不是来自于继承,而是来自于可能发生某种合法关系的两个类。这种语言有更大的灵活性。
      

  6.   

    to xiaohaiz(老土进城,两眼通红) 
    强!佩服!有见地!