java异常种类很多,常用的异常包括:算术异常类(ArithmeticException),空指针异常类(NullPointerException),输入输出异常类(IOException),数组下标越界异常类(ArrayIndexOutOfBoundsException)、类型转换异常类(ClassCastException)等。
Java中常有如下三种异常处理方法:
1.使用try-catch-finally语句。try语句块放置可能发生异常的代码,catch语句块捕获这些代码产生的异常,finally语句块无论程序是否有异常发生,都会执行。
2.使用throws关键字抛出异常。若某个方法可能发生异常,但不想在当前方法中处理这个异常,那就可以利用throws关键字在该方法抛出异常,然后在调用该方法的代码中捕获该异常进行处理。
3.自定义异常类与throw关键字
关于自定义异常类的使用,分为如下几个步骤:
1)创建自定义异常类,利用继承思想
2)在方法中通过throw关键字抛出异常对象
3)若在当前抛出异常的方法中处理,使用第一种方法,否则使用第二种方法
第一种异常处理方法测试代码如下:
/** *利用try-catch-finally语句块进行异常处理 */ public class ExceptionTest { public static void main(String[] args) { try { int iNum = 5 / 0; System.out.println(iNum); } catch (Exception e) { e.printStackTrace();//指出异常的类型、性质、栈层次及出现程序中的位置 } finally { System.out.println("第一种异常处理方法测试"); } } }
运行结果如下所示:
第二种异常处理方法测试代码如下:
/** *利用关键字throws进行异常处理 */ public class ExceptionTest1 { public static int divide(int iNum1, int iNum2) throws ArithmeticException { return iNum1 / iNum2; } public static void main(String[] args) { try { int iNum = divide(5,0); System.out.println(iNum); } catch (ArithmeticException e) { e.printStackTrace();//指出异常的类型、性质、栈层次及出现程序中的位置 } } }
运行结果如下所示:
第三种异常处理方法测试代码如下:
/** *类描述:自定义的异常类,继承于Exception */ class MyException extends Exception { String message; public MyException(String errorMessage) { this.message = errorMessage; } public String getMessage() {//覆盖getMessage()方法 return message; } } /** *自定义类MyException和throw关键字进行异常处理 */ public class ExceptionTest2 { public static int divide(int iNum1, int iNum2) throws MyException { if(0 == iNum2) { throw new MyException("除数不能为零。"); } return iNum1 / iNum2; } public static void main(String[] args) { try { int iNum = divide(5,0); System.out.println("计算结果是:" + iNum); } catch(MyException e) { System.out.println(e.getMessage()); } catch(Exception e) { System.out.println("程序发生了其他异常"); } } }
运行结果如下所示:
总结:
1.程序设计与开发中,需要考虑程序的异常,利用异常机制可以让程序更健壮与安全
2.异常处理不应用来考虑程序逻辑,主要避免程序运行时错误
参考资料:
【1】明日科技 李钟尉 陈丹丹编著.Java编程宝典.北京:人民邮电出版社,2010.