Java基础-Java中的异常有哪几类?分别怎么使用?

从根本上讲所有的异常都属于Throwable的子类,从大的方面讲分为Error(错误)和Exception(异常)。Eror是程序无法处理的异常,当发生Error时程序线程会终止运行。我们一般意义上讲的异常就是指的Exception,这也是面试官常问的问题。

下面就简单说一下关于Exception(以下都简称异常)的一点理解。

异常分为运行时异常(RuntimeException,又叫非检查时异常)和非运行时异常(又叫检查异常)。下面列举一下常见的运行时异常:

NullPointerException - 试图访问一空对象的变量、方法或空数组的元素

ArrayIndexOutOfBoundsException - 数组越界访问

NoClassDefFoundException - JAVA运行时系统找不到所引用的类

ArithmeticException - 算术运算中,被0除或模除

ArrayStoreException - 数据存储异常,写数组操作时,对象或数据类型不兼容

ClassCastException - 类型转换异常

IllegalArgumentException - 方法的参数无效

IllegalThreadStateException - 试图非法改变线程状态,比方说试图启动一已经运行的线程

NumberFormatException - 数据格式异常,试图把一字符串非法转换成数值(或相反)

SecurityException - 如果Applet试图执行一被WWW浏览器安全设置所禁止的操作

IncompatibleClassChangeException - 如改变了某一类定义,却没有重新编译其他引用了这个类的对象。如某一成员变量的声明被从静态改变为非静态,但其他引用了这个变量的类却没有重新编译,或者相反。如删除了类声明中的某一域或方法,但没有重新编译那些引用了这个域或方法的类

OutOfMemoryException - 内存不足,通常发生于创建对象之时

IncompatibleTypeException - 试图实例化一个接口,Java运行时系统将抛出这个异常

UnsatisfiedLinkException - 如果所需调用的方法是C函数,但Java运行时系统却无法连接这个函数

InternalException - 系统内部故障所导致的异常情况,可能是因为Java运行时系统本身的原因。如果发现一可重现的InternalException,可以直接给Sun公司发电邮java@java.Sun.com

前三种异常是我在开发中经常性遇到的问题,对于运行时异常通过它的别名(非检查是异常)我们可以知道这些异常不是我们写代码的时候可以检查到的,而是程序在运行的时候可能会发生的,也就是说这是在业务逻辑上可能会出现的问题。对于这类异常就需要我们在开发的时候尽量的把业务逻辑可能会出现的问题考虑清楚,进行异常捕捉。

常用的方法包括:try{}catch(Exception e){}finally{}和throws两种办法。try{}catch(Exception e){}finally{}是在方法中对异常进行捕获,catch可以写多个,Java运行时系统从上到下分别对每个catch语句处理的例外类型进行检测,直到找到类型相匹配的catch语句为止。(具体的就不过多赘述)throws是出现在方法头部,个人理解算是在最外层抛出异常。关于对运行时异常的处理,详情可以看这篇文章http://blog.csdn.net/zhuangzhineng/article/details/4000821,里面讲的格外详细,这里就不过多赘述。

非运行时异常中我们常遇到的可能有IOException、SQLException等,这类异常就是我们编写的代码、sql语句的问题了,这就需要我们回到代码中仔细检查了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、异常 简介:1.程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常处理机...
    危君子频道阅读 475评论 3 10
  • 1.JAVA反射 1)反射机制概念:在运行状态中,对于任何一个类都能够知道这个类所有属性和方法,并且对于任意一个对...
    YQT_T阅读 419评论 0 1
  • 什么是异常 异常是指阻止当前方法或者作用域继续执行的问题。异常对象(包括Exception和Error)都是Thr...
    朽木丿碎风阅读 384评论 0 1
  • @[toc] 异常 在程序设计和运行的过程中,发生错误是不可避免的。尽管 Java 语言的设计从根本上提供了便于写...
    夜雨流云阅读 263评论 0 0
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,120评论 0 4