Java基础-异常处理

2014-11-24 03:16:51 · 作者: · 浏览: 1

概念

“程序运行时,经常会出现一些非正常的现象,如死循环、非正常退出等,称为运行错误。根据错误性质将运行错误分为两类:错误(Error)和异常(Exception)”

Error一般由系统进行处理,程序本身无需捕捉和处理,只能通过提示Error信息检查、改正程序。

Exception(除数为0或操作数超出数据范围等)是在程序运行(而非编译)期间可能出现的现象,通过在程序中加入异常处理代码,使得产生异常时可执行该代码段调整程序运行方向,此过程称为异常处理。

我们总希望错误被发现、处理的越早越好,但有的错误只有在运行时才会发生,因此需要在程序中加入捕获、处理异常的代码,使得系统健壮性有所体现。

分类

Java语言采用面向对象的机制来处理异常。类之间结构为:

\

所有的异常类均继承自Throwable类,Throwable类继承自Object类,可见Java对异常控制是非常重视的。Throwable封装了异常类所应具备的基本方法:< http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+ICAgICAgICAgICAgICAgICAKZ2V0TWVzc2FnZSgpt7W72NLss6O1xL7fzOXD6Mr20MXPojwvcD4KPHA+ICAgICAgICAgICAgICAgICAKZ2V0U3RhY2tUcmFjZSgpt7W72NLss6O1xLbR1bvQxc+iPC9wPgo8cD4gICAgICAgICAgICAgICAgIApwcmludFN0YWNrVHJhY2UoKbTy06HS7LOjtcS20dW70MXPoqGjPC9wPgo8cD4gICAgICAgIApFcnJvcqO6z7XNs8Tasr+07c7zPC9wPgo8cD4gICAgICAgIApFeGNlcHRpb26jur/J0tS0psDttcTS7LOjPC9wPgo8cD4gICAgICAgIFJ1bnRpbWVFeGNlcHRpb26jurK7sdh0cnkuLi5DYXRjaDwvcD4KPHA+ICAgICAgICAgICAgICAgICAKxuTL+7fH1MvQ0NLss6PX08Dgo7qx2NDrY2F0Y2i1xEV4Y2VwdGlvbqOoQVBJsO/W+tbQt723qLrzw+ZUaHJvd3O1xNLss6PA4KOpPC9wPgo8aDE+tKbA7TwvaDE+CjxwPiAgICAgICAgCtK7sOPLtcC0o6zPtc2zsra78cXXs/a1xNLss6Oyosrks/bP4NOmtcTQxc+io6zNrMqx1tXWubPM0PLUy9DQo6y1vNbCxuS687PM0PLO3reo1MvQ0KGjztLDx9Do0qrIw7PM0PK908rVus20psDt0uyzo7bUz/OjrLTTtviyu9Owz+zG5Mv70+++5LXE1rTQ0KOsyrmzzNDyuPy809HPvfejrLfA1rnK/b7dv+K94bm50Lmho9Xi0Km+zcrHsra78dLss6O1xNLi0uXL+dTaoaM8L3A+CjxwPiA8L3A+CjxwPiAgICAgICAgCsq508N0cnktY2F0Y2gtZmluYWxsedPvvuSytrvxus20psDt0uyzo6O6dHJ50+++5L/pvavT0L/JxNzF17P20ru49rvytuC49tLss6O21M/ztcS3vbeosPy6rMbwwLSjrLP2z9bS7LOjyrG9+NDQsra78aO7Y2F0Y2jT777kv8nS1NPQtuC49qOst9ax8LSmwO2yu82swOC1xLbUz/OjrLWxs/bP1tLss6PKsaOsSmF2YdTL0NDKsc+1zbO9q7TTyc/N+c/C0sC0zrLpv7RjYXRjaNPvvuS0psDtwODQzcrHt/HT68XXs/bA4NDN0rvWwqOsvfi2+Na00NBjYXRjaNPvvuS/6cTayN2jrNLytMvU2rK2u/HS7LOjyrGjrNLss6PA4NauvOS05tTavMyz0LnYz7WjrNTy06a9q9fTwOC1xGNhdGNo0+++5L/pt8XWw7W9uLjA4LXEY2F0Y2jT777kv+nWrsewo7vO3sLbdHJ50+++5L/ptcTE2sjdyse38cXXs/bS7LOjo6xmaW5hbGx50+++5L/pxNrI3cq81tW2vLvhtcO1vda00NCjrNLytMtmaW5hbGx50+++5L/pzaizo7340NDXytS0x+XA7bmk1/ejqLnYsdW08r+qzsS8/qGiyb6z/cHZyrHOxLz+tcijqaGjPC9wPgo8cD4gICAgICAgIArKudPDdGhyb3fT777kv8nS1NTas8zQ8tbQ1ve2r8XXs/bS7LOjoaM8L3A+CjxwPjxicj4KPC9wPgo8cD4gICAgICAgIArKudPDdGhyb3dzudi8/NfW1Nq3vbeoyfnD99bQse3KvrjDt723qL2rxdez9tLss6OjrCYjMjY2ODQ7yr3I58/Co7o8L3A+CjxwPiAgICAgICAgICAgICAgICAgCls80N7Kzrf7Pl08t7W72CYjMjA1NDA7wODQzT48t723qMP7PihbPLLOyv3B0LHtPl0pW3Rocm93czzS7LOjwOA+XTwvcD4KPHA+ICAgICAgICAgICAgICAgICAK0ru49re9t6jF17P20uyzo7rzo6zPtc2zvavS7LOjz/LJz7SrsqWjrNPJtffTw8v7tcS3vbeowLS0psDt1eLQqdLss6O78rzM0PjP8snPtKuypaGjPC9wPgo8cD48YnI+CjwvcD4KPHA+ICAgICAgICAK19S2qNLl0uyzo8Dgo6xKYXZhv8nNqLn9tLS9qEV4Y2VwdGlvbrXE19PA4MC0tLS9qNLss6PA4KOstLS9qNfUtqjS5dLss6PA4L/Jv7zCx9LUz8K8uLXjo7o8L3A+CjxwPiAgICAgICAgICAgICAgICAgIDEuSmF2YdLss6PA4Mzlz7XW0LK7sPy6rMv50OjSqrXE0uyzo8Dg0M2hoyA8L3A+CjxwPiAgICAgICAgICAgICAgICAgIDIu08O7p9Do0qq9q9fUvLrL+czhuanA4LXE0uyzo9PrxuTL+8jLzOG5qbXE0uyzo7340NDH+LfWoaMgPC9wPgo8cCBsYW5nPQ=="en-US"> 3.类中将多次抛出这种类型的异常。

4.如果使用其它程序包中定义的异常类,将影响程序包的独立性与自包含性。


比较.NET异常处理

Java与.NET在异常处理的本质上是没有区别的,但在其语法表现上仍然需要区分:在.NET中没有throws语句,无需在声明方法时标出异常。

.NET中的异常分为两类:

1.程序执行所发生的异常,派生于ApplicationException类

2.公共运行库引发的异常,派生于SystemException类

这里异常处理机制同样也很简单,对可能出现异常的部分进行捕捉、处理,如果不能在当前处理,可通过throw抛出异常,交由调用者进行处理。


总结

异常处理是在今后工作中不可或缺的一项技能,在这里不能一一的分析每个异常类出现的处理方式,只能在具体问题中具体处理,而API帮助文档,是我们不可或缺的工具,相信随着经验的不断积累,对异常问题的处理也会变得越来越灵活,程序实现也更加健壮。