java 异常

来源:互联网 发布:红衣主教 知乎 编辑:程序博客网 时间:2024/06/05 19:52

java异常机制Exception




1、Error是JVM抛出来的问题,一般程序解决不了,可以不管

2、Exception

      由Exception派生出来的异常都是checkException,如通常的IOException、SQLException,这些异常必须进行try catch处理,不然编码的时候就会报错

    


     运行期异常是RuntimeException和他的子类,也叫做unchenkException,运行时异常通常不用try chatch捕获处理,发生运行时异常时通常向调用该方法的上层调用者抛出问题,这样一层层往上抛,都没有处理的话,最后会抛到最上层,如多线程是Thread.run(),单线程是mian(),当上层都不处理的时候,是线程或者主程序都会退出。由于也算是Exception的子类,所以他也可以捕获处理,这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。

     常见的运行时异常


     

ArrayStoreException         试图将错误类型的对象存储到一个对象数组时抛出的异常

ClassCastException          试图将对象强制转换为不是实例的子类时,抛出该异常

IllegalArgumentException    抛出的异常表明向方法传递了一个不合法或不正确的参数

IndexOutOfBoundsException   指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出

NoSuchElementException      表明枚举中没有更多的元素

NullPointerException        当应用程序试图在需要对象的地方使用 null 时,抛出该异常


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

ArrayIndexOutOfBoundsException - 数组越界访问

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

ClassCastException - 类型转换异常

IllegalArgumentException - 方法的参数无效

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

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

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

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

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

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

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

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

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

InternalException - 系统内部故障所导致的异常情况,可能是因为Java运行时系统本身的原因




例如






User类的setAge方法抛出的是一个运行时RuntimeException,在方法后面不需要显式的throws,在客户类调用时,也不需要try/catch捕获处理。
而CheckUser类的setAge方法则是抛出一个Exception(属于checkException),在setAge方法后面需要显式的抛出异常,或者是在Exception定义后面显示的用try/catch来捕获并处理,在客户类调用时,也需要显式的用try/catch捕获处理,如果不处理的话就需要显示在客户类调用其CheckUser对象的方法后面显式的抛出该异常,交由上级客户类捕获或者继续向上抛出。




0 0
原创粉丝点击