A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 夏日蓝雪 于 2014-6-13 10:35 编辑

对于自定义异常类,怎么区分编译时异常和运行时异常呢?我是该继承Exception呢,还是RuntimeException呢?

15 个回复

倒序浏览
你是指知道异常名称怎么判断吗?
--可以查JAVA API手册 看它是否属于RuntimeException

另外在代码中,只在方法内throw而没有在方法上声明throws,也可以编译通过的话,就是运行时异常(RuntimeException)
回复 使用道具 举报
泛型就是把运行时期转为编译时期,看到泛型就明白了
回复 使用道具 举报
最简单的:
javac出来的异常就是编译时异常
java出来的异常就是运行时异常
回复 使用道具 举报
编译时异常,说明有语法错误
回复 使用道具 举报
用Eclipse 编译,不报错,就OK了
回复 使用道具 举报
编译时异常,就是说把源代码编译成字节码(class)文件时报的异常,一般如果用Eclispe,你敲完代码保存的时候就是编译的时候。运行时,就是运行代码的时候

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
编译异常,更多的是代码语法错误,会提示,运行时异常,多与编写的逻辑思路有关
回复 使用道具 举报
RuntimeException   应该就是运行时异常
回复 使用道具 举报
HF_Opticalix 发表于 2014-6-10 22:25
你是指知道异常名称怎么判断吗?
--可以查JAVA API手册 看它是否属于RuntimeException

在编写自定义异常类时,因为不确定是否要加异常声明,或者说不确定它是编译时异常还是运行时异常,所以提出这个问题。对于自定义异常类,我是该继承Exceptions呢,还是RuntimeException呢?
回复 使用道具 举报
自己顶一下!这个问题确实理解不透,等大神指点。
回复 使用道具 举报
Exception是RuntimeException的父类。前面的主要用在编译时,后面的用在运行时。后面的可以不用再方法上抛出异常,直接在方法里面使用RuntimeException的对象。
回复 使用道具 举报
夏日蓝雪 发表于 2014-6-11 16:58
在编写自定义异常类时,因为不确定是否要加异常声明,或者说不确定它是编译时异常还是运行时异常,所以提 ...

当该异常发生时,无法继续向下执行,希望程序停止。换句话说,RuntimeException是程序编写者无法简单处理的问题,这时就将自定义异常继承RuntimeException。
比如当时除零的异常,是由于操作者传入了0这个错误参数,编程人员无法处理,所以要停下程序让操作者改正才行

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报 1 0
HF_Opticalix 发表于 2014-6-12 23:00
当该异常发生时,无法继续向下执行,希望程序停止。换句话说,RuntimeException是程序编写者无法简单处理 ...

嗯,老师也是这么讲的,当时听,没听明白,现在,理解了。thank you!
回复 使用道具 举报
HKing 中级黑马 2014-6-13 10:39:25
15#
        编译时异常: 程序正确,但因为外在的环境条件不满足引发。例如:用户错误及I/O问题----程序试图打开一个并不存在的远程Socket端口。这不是程序本身的逻辑错误,而很可能是远程机器名字错误(用户拼写错误)。对商用软件系统,程序开发者必须考虑并处理这个问题。Java编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。
        运行期异常: 这意味着程序存在bug,如数组越界,0被除,入参不满足规范.....这类异常需要更改程序来避免,Java编译器强制要求处理这类异常。
        编译时异常:Java.lang.Exception
        运行期异常:Java.lang.RuntimeException

        希望对你有所帮助!
回复 使用道具 举报
HKing 发表于 2014-6-13 10:39
编译时异常: 程序正确,但因为外在的环境条件不满足引发。例如:用户错误及I/O问题----程序试图打 ...

怎么感觉说反了呢?
我的理解是编译时异常是程序存在bug,需程序员解决;
运行时异常是操作者传入的参数不当,程序本身没有错,需操作者修改。
我们再好好想想。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马