黑马程序员技术交流社区
标题:
关于RuntimeException的问题。
[打印本页]
作者:
王浩骅
时间:
2013-6-1 10:26
标题:
关于RuntimeException的问题。
本帖最后由 王浩骅 于 2013-6-1 20:33 编辑
听毕老师说了关于RuntimeException和关于Exception的问题。理解的还没是很透彻。请更明白的同学分享一下。
作者:
刘海芳
时间:
2013-6-1 10:45
说下自己的理解:
两者的区别简单的说:非RuntimeException的异常要自己写catch块处理掉。我列举出几个常见的execption你就发现他们的功能之处了。
RuntimeException:
1、NullPointerException:见的最多了,其实很简单,一般都是在null对象上调用方法了。
String s=null;
boolean eq=s.equals(""); // NullPointerException
public int getNumber(String str){
if(str.equals("A")) return 1;
else if(str.equals("B")) return 2;
}
这个方法就有可能抛NullPointerException,发现了什么么?对就是无需自己手动的写try
public int getNumber(String str){
if(str==null) throw new NullPointerException("参数不能为空");
//你是否觉得明白多了
if(str.equals("A")) return 1;
else if(str.equals("B")) return 2;
}
2、NumberFormatException:继承IllegalArgumentException,字符串转换为数字时出现。比如int i= Integer.parseInt("ab3");
3、ArrayIndexOutOfBoundsException:数组越界。比如 int[] a=new int[3]; int b=a[3];
4、StringIndexOutOfBoundsException:字符串越界。比如 String s="hello"; char c=s.chatAt(6);
5、ClassCastException:类型转换错误。比如 Object obj=new Object(); String s=(String)obj;
6、UnsupportedOperationException:该操作不被支持。如果我们希望不支持这个方法,可以抛出这个异常。既然不支持还要这个干吗?有可能子类中不想支持父类中有的方法,可以直接抛出这个异常。
7、ArithmeticException:算术错误,典型的就是0作为除数的时候。
8、IllegalArgumentException:非法参数,在把字符串转换成数字的时候经常出现的一个异常,我们可以在自己的程序中好好利用这个异常。
复制代码
作者:
廖志强
时间:
2013-6-1 12:16
error好像没有的 难道说的是编译错误?
Exception、RuntimeException都是exception
try{
}catch(Exception ex){
ex......
}
java.lang.Exception
------java.lang.RuntimeException
RuntimeException是运行时虚拟机的错误,不能被catch
例子如下
class ThrowsRuntimeException {
void excep() {
int i = 10/0; // ArithmeticException
}
}
class ThrowsRuntimeExceptionDemo {
public static void main(String[] args) {
ThrowsRuntimeException obj = new ThrowsRuntimeException();
obj.excep();
}
}
不过可以这样捕捉
class ThrowsRuntimeException3 {
void excep() {
int i = 10/0; // ArithmeticException
}
}
class ThrowsRuntimeExceptionDemo3 {
public static void main(String[] args) {
ThrowsRuntimeException3 obj = new ThrowsRuntimeException3();
try {
obj.excep();
} catch (ArithmeticException e) {
System.out.println("算术例外");
e.printStackTrace();
}
System.out.println("处理结束");
}
}
作者:
骑上最爱
时间:
2013-6-1 12:47
Exception定义的特点:当函数内容有throw抛出异常对象,并未进行try处理,必须要在函数上声明。掉用着可以进行任意方式的处理。
RuntimeException的特点:当函数内容有throw抛出异常对象,不需要进行处理,也不用声明在函数上,如果运行中系统检测到错误,就自动把程序停掉。
作者:
赵乐
时间:
2013-6-1 12:55
Exceptoin中有一个特殊的子类异常RuntimeException 运行时异常。
如果在函数内容抛出该异常,函数上可以不用声明,编译一样通过。
如果在函数上声明了该异常。调用者可以不用进行处理。编译一样通过;
之所以不用在函数声明,是因为不需要让调用者处理。
当该异常发生,希望程序停止。因为在运行时,出现了无法继续运算的情况,希望停止程序后,
对代码进行修正。
对于异常分两种:
1,编译时被检测的异常。
2,编译时不被检测的异常(运行时异常。RuntimeException以及其子类)
通俗点讲(自己看视频的理解),就是如果出现的异常(比如要查询学生年龄) 年龄肯定不能为负数。 这时候就用RuntimeException,如果使用此方法的人输入了负数,那么程序就会停止,也就是强制让使用者修改参数,
如果使用RuntimeException 函数上是不不要声明的,如果出现异常会自动交给JVM处理。 而其他异常 要么声明 throws 要么cry, catch 也就是要么抛出去,要出处理
作者:
殇_心。
时间:
2013-6-1 18:07
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2