第一种情况:
throw new IllegalStateException("Cannot execute task:"
+ " the task is already running.");
在代码中直接抛出即可,如果遇到这类异常,程序会异常终止。
但是我们不需要try catch或者再次的throws。第二种情况:
throw new Exception("Cannot execute task:"
+ " the task is already running.");
为什么这种异常需要try catch或者再次的throws?他们都是同一个异常父类,有什么不一样的吗?求教?
throw new IllegalStateException("Cannot execute task:"
+ " the task is already running.");
在代码中直接抛出即可,如果遇到这类异常,程序会异常终止。
但是我们不需要try catch或者再次的throws。第二种情况:
throw new Exception("Cannot execute task:"
+ " the task is already running.");
为什么这种异常需要try catch或者再次的throws?他们都是同一个异常父类,有什么不一样的吗?求教?
解决方案 »
- 求教高人用apache poi读取WORD文档并保留完整格式的方法。。。
- 问个小问题
- java 反射 外部类 问题
- JB2005的问题
- 问一个继承的问题
- 请问rowset和resultset有什么区别?它都使用在什么情况下,谢谢,给分。
- java中final与C++中const有什么区别。
- 一个SocketServer 如何同时向多个客户端发送数据? 最好能有事例。
- 这是偶第二次提出这个问题,希望大家看看啦! java中那个类可以监听浏览器的动作???
- 如何用java实现数据库inner join算法,将不同list中的map关联到一行上
- 关于矩阵相乘输入及结果
- 软考(计算机技术与软件专业技术资格(水平)考试)过了的进入。
也就是可能会抛出RuntimeException的方法不被要求在方法throws clause中声明。原因我想RuntimeException相对那些受检异常有更多的不确定性和普遍性,如果改为受检异常,代价较大,也没必要,因为一般它总不为业务逻辑所容。对比几个可能会有更好的实感:
受检异常:ClassNotFoundException, SQLException, NoSuchMethodException...
RuntimeException:NullPointerException, IllegalArgumentException, ArithmeticException
如果把异常按检查分为两大类:
checked/unchecked exceptionchecked exception的检出工作是由编译器完成的,不确定性高的RuntimeException编译器无法检出或无法轻易检出(所以只能由jvm检出了)
java有两种主要的异常:runtime exception 和 checked exception .checked异常也就是我们经常遇到的io异常以及SQL异常,对于这种异常,我们必须进行处理。
runtime异常也称运行时异常,我们可以不处理,这种异常有虚拟机接管
打个比方:你的一个对象的引用是 null,而你却调用他的某个方法,这样的Exception你捕获好像不怎么有意义吧。
你的下面的Exception(继承Exception 而没有继承RuntimeException)是 checked Exception,当然要进行捕获哈···
像这个就会报ArithmeticException,但是不需要你人为捕获,这是程序运行时异常,是可以避免的异常。
在编译阶段不会报这个异常的,只有执行的时候才会报出异常。
加上try...catch...完全没有错。。