异常处理
java异常结构中定义有Throwable类,Exception 和Error是器其派生的两个子类,其中Exception表示由于网络故障、文件损坏、设备错误、用户输入非法等情况导致的异常;而Error表示Java运行时环境出现的错误,列如:JVM内存资源耗尽等。
- 如果方法体内部抛出的异常对象是可检测异常,在方法声明的位置加throws对应的异常类型。
- 如果方法体中抛出的是非检测异常,没必要在方法声明位置抛出对应的异常类型。
案例:
public class ExTest {
public void demo(int a,int b) {
if(b==0){
throw new ArithmeticException("除数不能为0");
}
System.out.println("开始相除");
System.out.println(a/b);
}
public void test(String fileName) throws FileNotFoundException{
if(fileName==null){
throw new FileNotFoundException("该文件不存在!");
}
System.out.println("找到该文件!");
}
}
/**
* 测试类
* @author adminitartor
*
*/
public class ExceptionDemo02 {
public static void main(String[] args) throws FileNotFoundException {
ExTest exTest = new ExTest();
// exTest.demo(3,0); //运行时会抛出异常
exTest.test(null); //编译器会检测到该异常
}
}
注意点:
1.在一个方法体内部某个位置抛出异常对象,程序到此结束,后面的代码不会继续执行
2.在重写中如果父类中的方法有异常抛出,此时在重写子类方式时:
a) 子类方法中可以抛出和父类一样的异常.
b) 子类方法不抛出异常.
c) 子类方法可以抛出父类异常的一部分,但是不可以抛出父类中没有的异常.
d) 子类方法可以抛出父类异常的子类异常,不可以抛出父类没有的异常.
java常见异常总结
非检测异常:
1. NullPointerException (空指针异常) -非检测异常
2. ClassCastException(类型强制转换异常) -非
3. ArithmeticException(数学运算异常)-非
4. IndexOutOfBoundsException (数组下标越界异常)–ArraylndexOutOfBoundsException
5. ArrayStoreException(数组存储异常)-非
6.SecturityException(安全异常)
7. NoSuchElementException – InputMismatchException
8. lllegalStateException
9. lllegalArgumentException(方法参数错误)
抛出的异常表明向方法传递了一个不合法或不正确的参数
–NumberFormatException(字符串转换为数字异常)
检测异常:
1. ClassNotFoundException (指定的类不存在)
2.IOException(输入输出异常)
3.SQLException (操作数据库异常)
4. ParseException(解析异常)
5. FileNotFoundException(文件未找到异常)
当试图将类型不兼容类型的对象存入一个Object[]数组时将引发异常
Object[] obj = new String[3];
obj[0] = new Integer(0);
6. IllegalAccessException (没有访问权限)