黑马程序员技术交流社区
标题:
java异常处理
[打印本页]
作者:
于星星
时间:
2012-7-17 10:19
标题:
java异常处理
每次在写到处理异常的时候 就不知道该怎么处理了,是抛出去,还是抓住,就是抓住了,在catch中又如何处理,还是转为RuntimeException异常,求高手详解。
作者:
夏儒日
时间:
2012-7-17 10:53
Throwable 是所有 Java 程序中错误处理的父类 ,有两种: Error 和 Exception 。Error :表示由 JVM 所侦测到的无法预期的错误,由于这是属于 JVM 层次的严重错误 ,导致 JVM 无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息。
Exception :表示可恢复的例外,这是可捕捉到的。runtime exception 和 checked exception 。 checked 异常也就是我们经常遇到的 IO 异常,以及 SQL 异常都是这种异常。 对于这种异常, JAVA 编译器强制要求我们必需对出现的这些异常进行 catch 。所以面对这种异常不管我们是否愿意,只能自己去写一大堆 catch 块去处理可能的异常。
runtime exception ,也称运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟机负责。比如:我们从来没有人去处理过 NullPointerException 异常,它就是运行时异常,并且这种异常还是最常见的异常之一。
至于catch中如何处理,这个问题太泛泛了,具体问题具体分析啊,不同的异常,其处理方式也会不一样。
Java异常处理的目的是提高程序的健壮性,你可以在catch和finally代码块中给程序一个修正机会,使得程序不因异常而终止或者流程发生以外的改变。同时,通过获取Java异常信息,也为程序的开发维护提供了方便。
作者:
位雪
时间:
2012-7-17 10:56
异常处理格式:try {需要被检测的代码}
catch (异常类 常量) {处理语句}
finally {一定会执行的语句}
这只是一种格式
异常有两种:
1、编译时被检测异常
该异常在编译时,如果没有处理(没有抛也没有try),编译失败。
该异常被标识,代表这可以被处理。
2、运行时异常(编译时不检测)
在编译时,不需要处理,编译器不检查。
该异常的发生,建议不处理,让程序停止。需要对代码进行修正。
运行异常常在子类覆盖父类中体现,其处理方式如下:
1,子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类。
2,如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。
3,如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常。如果子类方法发生了异常,就必须要进行try处理,绝对不能抛。
作者:
王飞
时间:
2012-7-17 10:57
具体情况具体对待,
有时候你覆写父类的方法,而你父类的方法又没有抛异常,此时就需要你自己在catch中处理了
如果代码中上面的地方出现问题会影响到下面的代码运行,此时就要抛RuntimeException,自己不能处理,处理了下面的代码在运行时就不知道哪里有问题,你后期想找出这个错误的话很难
你要是老师就可以抛,讲课嘛 方便
要不是的话 呵呵,那就都得处理
作者:
于星星
时间:
2012-7-17 11:00
谢谢各位
作者:
王龙彪
时间:
2012-7-17 11:05
如果一个函数可能会有问题,就需要在函数上用throws来声明下会抛异常.
Java中的异常,可以自动抛出,可以用throws关键字手动抛出.
但自定义的异常,需要用throw关键字手动抛出.
throw and throws的区别是:
throw 只能写在函数内,抛出的是异常对象,调用这个这个函数的时候在收到异常对象后,有两种处理方式,一是用try{}catch()处理,或者继续在函数上throws抛给下一个调用的对象.
throws只能写在函数上,抛出的是异常类
Runtimeexception是一个特殊的Exception的子类.它在函数内抛出的异常不需要声明.
作者:
黑马陈旭东
时间:
2012-7-17 11:11
在软件开发中,异常还是有必要处理的。你要把自己觉得会出现问题的代码,在编译阶段解决不了。那就得告诉你后来的操作者会出现的问题!
作者:
王达
时间:
2012-7-17 11:24
有的异常时不能抛的,比如你在多线程的时候继承Runnable接口的类就不能抛异常,因为它继承的接口是没有异常抛出的,子类只能抛出父类的异常或其异常的子类;在catch的时候你可以标注一下错误的内容,在程序有异常发生的时候就可以比较方便的找到那里出了异常了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2