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:
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;
}
NumberFormatException:继承IllegalArgumentException,字符串转换为数字时。
比如int i= Integer.parseInt("ab3");
ArrayIndexOutOfBoundsException:数组越界
比如 int[] a=new int[3]; int b=a[3];
StringIndexOutOfBoundsException:字符串越界
比如 String s="hello"; char c=s.chatAt(6);
ClassCastException:类型转换错误
比如 Object obj=new Object(); String s=(String)obj;
UnsupportedOperationException:该操作不被支持,如果我们希望不支持这个方法,可以抛出这个异常。既然不支持还要这个干吗?有可能子类中不想支持父类中有的方法,可以直接抛出这个异常。
ArithmeticException:算术错误,典型的就是0作为除数的时候。
IllegalArgumentException:非法参数,在把字符串转换成数字的时候经常出现的一个异常,我们可以在自己的程序中好好利用这个异常。
这些异常一看到名字就知道是怎么回事了,其实只要理解了java的异常处理机制,这些都不是问题。
分享到:
相关推荐
Eclipse运行TOMCAT出现"a java exception has occurred"的解决办法 Eclipse是一款功能强大且广泛应用的集成开发环境(IDE),它支持多种编程语言,包括Java、C++、Python等。TOMCAT则是一款流行的Java Web服务器,...
Java exception handling methods and several example source code
exception基础,异常的基本用法。
Java异常处理的几个Example代码,让我们了解异常类型、声明异常、抛出和捕获异常、从异常获取信息、创建自定义异常等内容。
Java Exception Handling 内容.ppt
Java Exception 几种不适当的处理
Model类中创建HashMap并运用基本的数学算法,Program类中调用Model类并在通过UI实现,过程中对于可能出现的checked exception利用try-catch解决。
反编译工具两个版本,一个支持jdk1.7的 如果打开弹出这个提示 A Java Exception has occurred 可以使用另外一个1.7版本的试试看
主要介绍了Java Exception 捕获和显示实例详解的相关资料,需要的朋友可以参考下
JD-GUI是使用C++开发的一款Java反编译工具,它是一个独立图形界面的Java源代码“.class”文件反编译工具。 JD-GUI是使用C++开发的一款Java反编译工具,它是一个独立图形界面的Java源代码“.class”文件反编译工具。
关于javaexception的讲解,很透彻,适合中高级别的!
java遇到的问题java遇到的问题java遇到的问题java遇到的问题java遇到的问题java遇到的问题java遇到的问题java遇到的问题java遇到的问题java遇到的问题java遇到的问题java遇到的问题
最新版jd-gui,适用于x86版本的JDK,JDK最低要求1.6,最高支持1.8
下面小编就为大家带来一篇Java异常 Exception类及其子类(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
java development part of exception
java解决nested exception is java.lang.OutOfMemoryError Java heap space 解决OOM
一个简单的Clojure库,该库允许在Clojure中动态定义Java Exception类。 动机 有时,您只需要可以直接捕获的快速Exception类。 defexception使用Java字节码动态创建直接从clojure.lang.ExceptionInfo继承的Java类。 ...
java Exception中Throwable和Exception之间的区别
javaexception.zip 07.Java面向对象编程扩展(计算器异常捕捉实例) 第3部分(5个程序包) javaio.zip 09.Java输入/输出流 javavi.zip 09.Java输入/输出流上机作业参考(文本编辑器) javathread.zip 10.Java多...