`
xitong
  • 浏览: 6189139 次
文章分类
社区版块
存档分类
最新评论

关于runtimeException异常

 
阅读更多
Java中采用了强制异常捕捉机制,这样一方面提高了程序的可靠性,不过有时候也带来一些麻烦。比如:
int i= Integer.parseInt("33");
这个我知道它不可能会抛出异常,但是不捕捉异常的话就过不了编译这关,当然这个代码没有意义的。
Java中所有异常或者错误都继承Throwable:
1.Error:所有都继承自Error,表示致命的错误,比如内存不够,字节码不合法等。


2.Exception:这个属于应用程序级别的异常,这类异常必须捕捉。
3.RuntimeException:奇怪RuntimeException继承了Exception,而不是直接继Error, 这个表示系统异常,比较严重。


java中异常分两类,一类是需要处理的(Checked exceptions), 一类是不需要处理的(Unchecked exceptions)。
是否需要处理是指:你程序中抛出的异常客户端是否需要处理,是否有能力处理。
以用户注册来说明,每个用户有一个唯一的注册名,当用户提交注册信息时,从后台检测这个注册名已经存在,违反唯一性,这时候你可以抛出一个checked exception,上层程序可以捕获这个异常,并将信息提示给用户,让用户换个注册名;
如果在用户提交注册信息时,正好你的数据库宕掉了,无法对数据进行存取,这时候你就要抛出unchecked exception(例如你自定义的继承于runtimeexception的异常),这个异常上层程序无须捕获,或者说捕获了除了继续向外抛以外也无能为力。
如果一方法有可能引发Exception子类对象表示的异常,那就应该在此方法中捕获处理这些异常或抛弃这些异常。如IOException类和FileNotFoundException类的异常。
但是,RuntimeException类的子类表示的异常是无需这样做的,而我们遇到的很多异常都是RuntimeException类的子类表示的异常。
IOException类异常对象举例:
import java.io.*;
class second_exception {
public static void main(String arg[]){
System.in.read(); //此处必须捕捉IOException异常,否则将无法编译。
System.out.println("4444444444");
}
}
正确的写法是:
import java.io.*;
class second_exception {
public static void main(String arg[]){
try{
System.in.read();
} catch(IOException e){
System.out.println("4444444444");
}
}
}
RuntimeException类的一些子类:
1、ArithmeticException:无效的算术运算情况引起的异常。
2、IndexOuterOfBoundsException(它有两个子类:ArrayIndexOuterOfBoundsException、StringIndexOuterOfBoundsException):超出应用对象边界下标。
举例1:
class first_exception {
public static void main(String arg[]){
int aa[]={10,100,1000};
System.out.println(aa[5]); //此处将抛出ArrayIndexOuterOfBoundsException异常
}
}
举例2:
class first_exception {
public static void main(String arg[]){
String aa=new String("123456789");
System.out.println(aa.charAt(14)); //此处将会抛出StringIndexOuterOfBoundsException异常
}
}
3、NegativeArraySizeException:试图定义大小为负值的数组。
举例:
class first_exception {
public static void main(String arg[]){
int aa[];
aa=new int[-3]; //此处将抛出NegativeArraySizeException异常
aa[0]=10;
aa[1]=100;
aa[2]=1000;
System.out.println(aa[1]);
}
}
4、NullPointerException:使用的对象是NULL的。举例:
class first_exception
{
public static void main(String arg[]){
String aa=new String("111");
if(arg[0].equals(aa)){ //此处如果返回true,则会报错抛出NullPointerException异常
aa=null;
}
System.out.println(aa.toString());
}
}
5、ClassCastException:强制转换为无效的类型。
6、IllegalArgumentException(它有两个子类:IllegalThreadStateException、NumberFormatexception):方法参数错误。
举例1:
class first_exception {
public static void main(String arg[]){
int aa=55;
System.out.println(Double.valueOf("aaa")); //此处抛出IllegalArgumentException的子类NumberFormatException异常
}
}
7、SecurityException:略
8、IllegalMonitor:略
9、StateException:略
10、IllegalStateException:略
11、Unsupported:略
12、OperationException:略

14、UnsupportedOperationException:该操作不被支持,如果我们希望不支持这个方法,可以抛出这个异常。既然不支持还要这个干吗?有可能子类中不想支持父类中有的方法,可以直接抛出这个异常。


转自:http://www.java3z.com/cwbwebhome/article/article8/806.html

分享到:
评论

相关推荐

    解决 java.lang.RuntimeException: Could not generate DH keypair异常处理所需的bcprov的jar

    解决 java.lang.RuntimeException: Could not generate DH keypair异常处理。 bcprov-ext-jdk15on-1.60、bcprov-jdk15on-1.60两个包放到jre下的$JAVA_HOME/jre/lib/ext的路径下,然后配置$JAVA_HOME/jre/lib/...

    RuntimeException

    一些常见的运行时异常,一些常见的运行时异常,一些常见的运行时异常,

    Java异常处理运行时异常(RuntimeException)详解及实例

    主要介绍了 Java异常处理运行时异常(RuntimeException)详解及实例的相关资料,需要的朋友可以参考下http://time.qq.com/?pgv_ref=aiotime

    Java异常架构详细介绍与说明(值得珍藏)

    Java异常架构主要由以下几个部分组成: Throwable:这是Java中所有错误或异常的超类。它包含了两个子类:Error和Exception。通常,Error用于指示合理的应用程序不应该试图捕获...编译器不会检查RuntimeException异常。

    总结了一下JAVA中常见的几种RuntimeException

    总结了一下JAVA中常见的几种RuntimeException

    在Java中异常分析

    java.lang.RuntimeException java.lang.ArithmeticException 当出现异常的运算条件时,抛出此异常。  这个异常的解释是 "数学运算异常 ",比如程序中出现了除以零这样的运算就会出这样的异常,对这种异常,...

    JAVA异常基础入门

    这类异常通常是由编程错误导致的,因为只有小心点,这些异常都是可以避免的,所以在编写程序时,并不要求必须使用异常处理机制来处理这类异常,所有这类异常都继承自java.lang.RuntimeException。 注意:...

    java开发异常处理与日志规范

    Java 类库中定义的可以通过预检查方式规避的RuntimeException异常不应该通过 catch 的方式来处理,比如:NullPointerException,IndexOutOfBoundsException 等。

    Java异常处理.md

    常见的异常类包括Exception和RuntimeException。 为了处理异常,我们使用try-catch-finally语句块。在try块中编写可能抛出异常的代码,然后使用一个或多个catch块来捕获并处理这些异常。finally块用于执行无论是否...

    基础深化和提高-异常机制

    Java的异常机制是一种用于处理程序中出现错误情况的机制,它使得程序可以更加健壮和可靠。在Java中,异常被表示为对象,它们提供了一种结构化...未检查异常通常是RuntimeException的子类,可以选择性地进行捕获和处理。

    java异常体系结构

    超全的java异常体系结构以及异常的处理方案,Throwable->Exception-> RuntimeException

    程序运行出现的异常

    程序运行出现的异常

    【09-异常处理】

    RuntimeException类及其子类的实例被称为Runtime异常;不是RuntimeException类及其子类 的异常实例则被称为Checked异常。 Checked异常的处理 •当前方法明确知道如何处理该异常,程序应该使用try......

    《Java程序设计案例教程》教学课件07异常处理.pptx

    7.2 异常与异常类 7.2.3 未受检异常 属于RuntimeException类及其子类的异常和Error类及其子类的异常被称为未受检异常(unchecked exception)。未受检异常在编译阶段不能被Java编译器检测到。不强迫用户利用异常...

    Java异常面试题.docx

    Java 中的 Exception 是什么?...既然我们可以用 RuntimeException 来处理错误,那么你认 为为什么 Java 中还存在检查型异常? throw 和 throws 这两个关键字在 java 中有什么不同? 什么是“异常链”? ....

    基于Struts的异常处理

    通过定义继承RuntimeException的异常类及继承ExceptionHandler的异常处理类,手动从dao层捕获异常。非常实用!

    JavaSE_2_异常处理

    异常的处理流程,异常类的继承关系,异常的统一出口,throws关键字,throw关键字,异常的标准处理结构,RuntimeException与Exception的区别,自定义异常类,assert关键字,Eclipse debug

    【Java】自定义异常和异常中的方法覆盖注意事项

    文章目录1. 自定义异常1.1 定义方式...备注:受查异常CheckedException和运行时异常RuntimeException的定义方式没有区别。 // 受查异常 (编译前,就必须处理的异常,需要throws声明传递出去) class SexMismatchExcepti

    Java 常见异常(Runtime Exception )详细介绍并总结

    主要介绍了Java 常见异常(Runtime Exception )详细介绍并相关资料,大家在开发Java 应用软件的时候经常会遇到各种异常这里帮大家整理了一部分,并解释如何解决,需要的朋友可以参考下

    浅谈RxJava处理业务异常的几种方式

    关于异常 Java的异常可以分为两种:运行时异常和检查性异常。 运行时异常: RuntimeException类及其子类都被称为运行时异常,这种异常的特点是Java编译器不去检查它,也就是说,当程序中可能出现这类异常时,即使...

Global site tag (gtag.js) - Google Analytics