Java异常处理

来源:互联网 发布:阿里云音视频 编辑:程序博客网 时间:2024/06/08 14:03

一、 异常处理

1. Java程序运行过程中所发生的异常事件可分为两类


 错误(Error):JVM系统内部错误、资源耗尽等严重情况(不管)

 异常(Exception):其它因编程错误或偶然的外在因素导致的一般性问题。


2. Error/Exception层次图

 


 

3. 常见异常


RuntimeException

¨ ArithmeticException:数学计算异常


¨ NullPointerException:空指针异常


¨ NegativeArraySizeException:负数组长度异常


¨ ArrayOutOfBoundsException:数组索引越界异常


¨ ClassNotFoundException:类文件未找到异常


¨ ClassCastException:造型异常


ClassCastException - 类型强制转换异常。


IllegalArgumentException - 传递非法参数异常。


ArithmeticException - 算术运算异常


ArrayStoreException - 向数组中存放与声明类型不兼容对象异常


IndexOutOfBoundsException - 下标越界异常


NegativeArraySizeException - 创建一个大小为负数的数组错误异常


NumberFormatException - 数字格式异常


SecurityException - 安全异常


UnsupportedOperationException - 不支持的操作异常 常见的 


IOException

¨ FileNotFoundException:文件未找到异常


¨ EOFException:读写文件尾异常


¨ MalformedURLException:URL格式错误异常


¨ SocketException:Socket异常



4. try-catch-finally (不要在循环内写trycatch

try{

  // 可能会抛出特定异常的代码段

}catch(MyExceptionType  myException){

// 如果myException 被抛出,则执行这段代码

}catch(Exception otherException){

//如果另外的异常otherException被抛出,则执行这段代码

} [finally{ //用于资源回收

//无条件执行的语句

}]


5. Java异常调用机制


如果一个异常没有在当前的try-catch模块中得到处理,则它会抛出到它的调用方法。

如果一个异常回到了main()方法,仍没有得到处理,则程序会异常终止。


6. 捕获异常和抛出异常的方式,并不是排它的,它们可以结合起来使用:


method() throws XXXException

  {

try{…}

catch(XXXException e)

{

throw e;

}

  }

}


throwsthrow的区别


throws用于方法的声明上,其后跟的是异常类名,后面可以跟多个异常类之间用逗号隔开

throw用于方法体中,其后跟的是一个异常对象名


7. 方法覆盖中的异常

当子类中的方法覆盖父类中的方法时,可以抛出异常。

覆盖方法抛出的异常,可以抛出与被覆盖方法的相同的异常或者被覆盖方法的异常的子类异常。

如果父类方法没有声明抛出异常,则子类覆盖方法也不可以抛出”已检查”异常。


8. final,finally,finalize区别。


final是最终的意思。它可以用于修饰类,成员变量,成员方法。


它修饰的类不能被继承,它修饰的变量时常量,它修饰的方法不能被重写。


finally:是异常处理里面的关键字。


它其中的代码永远被执行。特殊情况:在执行它之前jvm退出。System.exit(0);


finalize:Object类中的一个方法。

它是于垃圾回收器调用的方式。


9.  自定义异常


定义类继承Exception或者RuntimeException


1,为了让该自定义类具备可抛性。

2,让该类具备操作异常的共性方法。


class MyExcepiton extends Exception

{

MyExcepiton(){}

 

MyExcepiton(String message)

{

super(message);

}

}

 


class MyException extends RuntimeException

{

MyExcepiton(){}

 

MyExcepiton(String message)

{

super(message);

}