来自:http://blog.csdn.net/newpiaoyun/article/details/2907731
Java中采用了强制异常捕捉机制,这样一方面提高了程序的可靠性,不过有时候也带来一些麻烦。比如: int i= Integer.parseInt("33");这个我知道它不可能会抛出异常,但是不捕捉异常的话就过不了编译这关,当然这个代码没有意义的。
Java中所有异常或者错误都继承Throwable,我们把它分为三类吧:
1.Error:所有都继承自Error,表示致命的错误,比如内存不够,字节码不合法等。
2.Exception:这个属于应用程序级别的异常,这类异常必须捕捉。
3.RuntimeException:奇怪RuntimeException继承了Exception,而不是直接继Error, 这个表示系统异常,比较严重。
Error我们很少遇到,但是并不是说Error就一定非常致命,举个例子,NoSuchMethodError表示没有这个方法,你调用的方法不存在,你一定觉得奇怪,不存在怎么编译的过去呀?很简单的,你先编译好一个被调用的类A,给一个方法。然后在你的程序调用它,编译没问题,运行也没问题。现在再把A类中这个方法去掉,重新编译一遍,你再运行你的程序就知道错误是怎么回事了。
Exception不用说,我们要自己捕捉。
RuntimeException可以说见的最多了,下面我们说明一下常见的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,我建议你主动抛出异常,因为代码一多,你可能又晕了。
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:非法参数,在把字符串转换成数字的时候经常出现的一个异常,我们可以在自己的程序中好好利用这个异常。
这些异常一看到名字就知道是怎么回事了,其实只要理解了java的异常处理机制,这些都不是问题。
相关推荐
java.lang.runtimeexception unexpected subelement
解决 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/...
总结了一下JAVA中常见的几种RuntimeException
java.lang.RuntimeException: Unsupported algorithm: HmacSHA1 解决方法,阿里云
1、修改jdk/jre/lib/security/java.security,加粗部分放到最前面,其它依次修改编号放到后面 security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider security.provider.2=sun.security....
主要介绍了javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair 解决方法,有需要的朋友们可以学习下。
java.lang.RuntimeException java.lang.ArithmeticException 当出现异常的运算条件时,抛出此异常。 这个异常的解释是 "数学运算异常 ",比如程序中出现了除以零这样的运算就会出这样的异常,对这种异常,...
解决Got an exception - java.lang.RuntimeException: Unable to get class information for ***Exception. 找这个解决方法找了一个晚上,希望能对你有帮助!
一些常见的运行时异常,一些常见的运行时异常,一些常见的运行时异常,
基于dex2jar 2.0版本解决 java.lang.RuntimeException: can not merge I and Z问题
加密是报:javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair 此处提供 bcprov-ext-jdk15on-154.jar 和 bcprov-jdk15on-154.jar 压缩包中有使用说明
报错 java.lang.OutOfMemoryError: PermGen space 报错 java.lang.OutOfMemoryError: Java heap 启动报错java.lang.ClassNotFoundException: 1catalina.org.apache.juli.FileHandler JAVA_OPTS="-server -Xms800m ...
1.基于 trie 树结构实现高效词图扫描 2.生成所有切词可能的有向无环图 DAG 3.采用动态规划算法计算最佳切词组合 4.基于 HMM 模型,采用 Viterbi (维特比)算法实现未登录词识别
4)java.lang.RuntimeException: java.lang.RuntimeException: Hive Runtime Error while closing operators: null 5)hive on tez 最终insert的表如果使用到union all 时会导致直接查询结果表数据为空的
主要介绍了 Java异常处理运行时异常(RuntimeException)详解及实例的相关资料,需要的朋友可以参考下http://time.qq.com/?pgv_ref=aiotime
java.lang.UnsupportedOperationException异常(csdn)————程序
这类异常通常是由编程错误导致的,因为只有小心点,这些异常都是可以避免的,所以在编写程序时,并不要求必须使用异常处理机制来处理这类异常,所有这类异常都继承自java.lang.RuntimeException。 注意:...
主要介绍了Java 常见异常(Runtime Exception )详细介绍并相关资料,大家在开发Java 应用软件的时候经常会遇到各种异常这里帮大家整理了一部分,并解释如何解决,需要的朋友可以参考下
a面试大全2021是一套最新Java面试必问合集,这本面试手册包含了Java基础、Java集合、JVM、Spring、Spring Boot、Spring Cloud、Mysql、Redis、RabbitMQ、Dubbo、Netty、分布式及架构设计等方面的技术点。内容难度...
NULL 博文链接:https://listen-raining.iteye.com/blog/1962065