该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
java编译器要求java程序必须捕获或声明所有的非运行时异常,但对运行时异常可以不做处理。虽然编译器对运行时异常不强制要求处理,但是实际开发中为了程序的健壮性,还是有必要处理的。 在开发过程中常见的RuntimeException类型的异常主要有一下几种。 ArithmeticException:数学计算异常
NullPointerException:空指针异常
NegativeArraySizeException:负数组长度异常
ArrayOutOfBoundsException: 数组索引越界异常
ClassNotFoundException:类文件未找到异常
ClassCastException:类型强制转换异常
SecurityException:违背安全原则异常 其他非Runtime类型的常见异常主要有以下几种
NoSuchMethodException:方法未找到异常
IOException:输入输出异常
EOFException:文件已结束异常
FileNotFoundException:文件未找到异常
NumberFormatException:字符串转换为数字异常
SQLException:操作数据库异常 上面列出的都是开发中时常出现的异常,而且每一种异常产生的原因都是相同的,因此解决方法都差不多。 下面再说说java中异常处理的方式:
1、使用try-catch-finally try{
//可能会抛出特定异常的代码段
}catch(MyExceptionType myException){
//如果myexception被抛出,则执行这段代码
}catch(Exception otherException){
//如果另外的异常被抛出,则执行
}finally{
//无条件执行的语句
}
再上述语句块中,try和catch语句是必须的,而且catch语句可以定义多个,finally语句不是必须的。 2、使用throws
如果在定义一个方法的时候,并不能确定如何处理其中可能出现的异常,可以不用在方法中使用try-catch-finally结构对异常进行处理,而是将可能发生的异常抛给该方法的调用者来处理。使用格式:
public void f1() throws IOException,RuntimeException{
业务逻辑代码,可能会产生IOException,RuntimeException异常
}
上述代码中在定义f1()方法时,通过throws关键字指定了该方法可能抛出的异常类型,throws后面可以写一个会对个异常类型,多个用“,”隔开。
有了处理方法,那么我们在实际使用中该选择那种异常处理方法呢
好了,现在说下异常处理方法的选择,try-catch方法允许开发者在程序发生异常时,对异常部分进行补救或处理,而throws方式仅仅是发生异常后将异常抛给上一级,让调用该方法的方法处理异常。选择时可以按以下原则进行:
如果方法中前面代码发生异常后,后面代码需要继续执行,可以选择try-catch。
如果方法中的代码发生异常后,有替代方案或需要特殊处理,可选try-catch。
如果方法中的代码发生异常后,无法处理,后面代码无法正常工作,可以选择throws。
根据特定情况而定,有些厂商规定异常在某一特定层使用try-catch处理,其他层都统一使用throws抛出。
原文(送粮网):http://www.51songl.com/common-java-exceptions.html