JAVA 什么是抛异常?什么情况下用抛异常?

如题所述

”抛异常”简单的说就是出现一些意想不到的情况时的处理方法,举个例子,当做一个加法时,如果你输入的不是数字,就会异常,这个时候如果你没在程序里作异常处理,出错信息就会很烦,普通用户看不懂,加上异常处理,也就是”抛异常”后,可以自己定义出错信息.

当有可能出现异常错误时”抛出异常”
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-12-25
楼上的说的很好,好强大.你们具体编码对异常是如何处理的,什么时候改抛,什么时候该捕捉.如何处理.不知道具体编码你们有什么约定没有.想听听你们的看法.
第2个回答  2007-12-25
异常处理机制是当程序出现错误后,程序应该怎么处理。具体来说,异常处理机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生变化,程序的控制权移到异常处理器。它有五个关键字:try,catch,finally,throw,throws. try的意思就是测试它所包含的代码段中是否发生异常。catch的意思是当发生异常后,捕捉它并做相应的处理,使程序能够正常执行下去。throw的意思是在程序中明确发生异常。 thrwos 的作用是如果一个方法可以引发异常而他本身并不对异常进行处理,而是将这个异常抛给调用他的方法。finally 是无论发不发生异常都要被执行代码执行。
第3个回答  2007-12-25
Java应用程序中的异常处理可以告诉用户构建应用程序的架构强度。架构是指在应用程序的各个层面上所做出的并始终遵守的决策。其中最重要的决策之一便是应用程序中类、子系统或层之间进行互相通信的方式。方法通过Java异常可以为操作传递另一种结果,因此应用程序架构特别值得我们去关注。

判断Java架构师技能的高低和开发团队是否训练有素,其中比较好的方法是查看应用程序中的异常处理代码。首先需要观察的是有多少代码专门用于捕捉异常、记录异常、确定发生的事件和异常转化。简洁、紧凑和有条理的异常处理表明团队有使用Java异常的一致方法。当异常处理代码的数量将要超过其他方面的代码时,可以断定团队成员之间的沟通已经打破(或者这种沟通从一开始就不存在),每个人都用自己的方法来处理异常。

临时异常处理的结果非常具有预见性。如果问团队成员为什么在代码的某个特定点丢弃、捕捉、或忽略某个异常,回答通常是:“除此之外,我不知道怎么做。”如果问他们在编写代码的异常实际发生时会产生什么情况,他们通常会皱眉,回答类似于:“我不知道。我们从来没有测试过。”

要判断Java组件是否有效地利用了Java异常,可以查看其客户端的代码。如果客户端代码中包含大量计算操作失败时间、原因和处理方法的逻辑,原因几乎都是由于组件的错误报告设计。有缺陷的报告会在客户端产生大量的“记录和遗留”(log and forget)代码,而没有任何用途。最糟糕的是扭曲的逻辑路径、互相嵌套的try/catch/finally程序块,以及其他导致脆弱和无法管理的应用程序的混乱。

事后处理异常(或者根本不处理)是造成软件项目混乱和延迟的主要原因。异常处理关系到软件设计的各个方面。为异常建立架构约定应该是项目中首先要做出的决定之一。合理使用Java异常模型将对保持应用程序的简洁性、可维护性和正确性大有帮助。

挑战异常准则
如何正确使用Java异常模型已经成为大量讨论的主题。Java并不是支持异常语义的第一种语言;但是,通过Java编译器可强制使用规则来控制如何声明和处理特定的异常。许多人认为编译时异常检查对精确软件设计有帮助,它与其他语言特征能够很好地协调起来。图1表明了Java异常的层次结构。

通常,Java编译器会根据java.lang.Throwable强制方法抛出异常,包括其声明中“throw”子句的异常。同样,编译器会验证方法的客户端是捕获声明异常类型还是指定自己抛出异常类型。这些简单的规则对于全世界的Java开发人员产生了深远的影响。

编译器针对Throwable继承树的两个分支放宽了异常检查行为。java.lang.Error和java.lang.RuntimeException的子类免于编译时检查。在两者中,软件设计人员通常对运行时异常更感兴趣。通常使用术语“未检查异常”(unchecked exception)来区分其他的所有“已检查异常”(checked exception)
相似回答