黑马程序员技术交流社区

标题: 异常处理 [打印本页]

作者: 落叶归根    时间: 2013-9-11 17:02
标题: 异常处理
本帖最后由 落叶归根 于 2013-9-11 20:57 编辑

  RuntimeException什么时候抛出这个异常?什么情况下使用它?
作者: 杨伟斌    时间: 2013-9-11 17:14
首先RuntimeException是运行时异常,也叫做编译时不被检测异常。什么时候使用这个异常呢?比如:你做了一个程序,要让别人传参数,本来的你参数列表只要求传递一些数字【1——9等等】,但是被人却偏偏要传递文字符号之类的,这肯定会让你的程序引发异常,因为这种异常编译时不见测,运行时直接让程序挂掉就行。但是Exception正好相反,即编译时检测异常,这种异常就希望在编译时及时发现,及时纠正。【个人理解】
作者: Yuan先生    时间: 2013-9-11 17:24
本帖最后由 Yuan先生 于 2013-9-11 17:27 编辑

java中所有异常或者错误都继承Throwable:
  1.Error:所有都继承自Error,表示致命的错误,比如内存不够,字节码不合法等。
  2.Exception:这个属于应用程序级别的异常,这类异常必须捕捉。
  3.RuntimeException:奇怪RuntimeException继承了Exception,而不是直接继Error, 这个表示系统异常,比较严重。

java中异常分两类,一类是需要处理的(Checked exceptions), 一类是不需要处理的(Unchecked exceptions)。
是否需要处理是指:你程序中抛出的异常客户端是否需要处理,是否有能力处理。
    如果一方法有可能引发Exception子类对象表示的异常,那就应该在此方法中捕获处理这些异常或抛弃这些异常。如IOException类和FileNotFoundException类的异常。
   但是,RuntimeException类的子类表示的异常是无需这样做的,而我们遇到的很多异常都是RuntimeException类的子类表示的异常。    RuntimeException,也就是运行时异常,表示你的代码本身存在BUG,比如你提到的ArrayIndexOutOfBoundsException,数组下标越界,这个属于代码有问题,数组定义的长度不够实际使用,不处理肯定会报错,如果你操作某个模块发现能正常运行,那只是因为代码还没跑到这个错误的地方而已。。控制台一旦报RuntimeException,就必须要处理。。没有例外的。而且,处理RuntimeException,不是try-catch能解决的。。try-catch在这里使用毫无意义。
    不是RuntimeException,就是编译时异常,异常只有这两种了。比如你在处理文件流时的I/O问题,就属于编译时异常。这个时候用thr{}catch 来捕获或者 throws即可。


作者: 蓝骑    时间: 2013-9-11 17:25
主要用于检测web工程出现的一些错误,比如你要进行一场查询,可能会因为查询条件或者SQL语法错误导致运行失败,为了检测到这个异常发生在神马地方,通常做法是把可能出现异常的代码捕获一下,然后自定义一个运行时异常,进行相关说明!!~
作者: doevents    时间: 2013-9-11 18:09
RuntimeException是运行时异常,在运行的时候才会出现,编译的时候是不会报错的;像空指针异常,下标越界异常,类型转换异常、算数异常等都属于RuntimeException异常, 处理RuntimeException的方法是:如果出现RuntimeException异常的话,那么一定是自己写的代码有错误导致的。可以自己去检查下代码是否下标越界等。
作者: 静以修身    时间: 2013-9-11 19:12
假如发生的异常已经无法再让程序继续运行,需要让程序停止,即程序代码有问题的,则抛出RuntimeException这个异常,由调用者对代码进行修正。发生的异常无法让程序继续运行的情况下使用它。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2