1.列举有几种异常
(1)java.lang.NullPointerException (空指针异常)
(2)java.lang.ClassNotFoundException(类找不到异常)
(3)java.lang .NumberFormatException(数字格式异常)
(4)java.lang.IndexOutOfBoundsException(数组角标越界异常)或者(数组索引越界异常)
(5)java.lang .IllegalArgumentException(非法参数异常)
(6)java.lang .ClassCastException(类转换异常)
(7)java.lang.NoClassDefFoundException(类未定义异常)
(8)SQLException(sql异常)操作数据库异常
(9)java.lang.IOException (io异常)
(10)java.lang .NoSuchMethodException(没有匹配异常)
public class TestException {
public static void main(String[] args) throws IOException, ClassNotFoundException {
/**---1-4 运行时异常:只有右键运行才可以查看异常----*/
//1 空指针异常 NullPointerException
// String str = null;
// System.out.println( str.length() ); //str 空指针
//2 数字格式化异常 NumberFormatException
// String num = "b123";
// Number parse = Integer.parseInt(num);
// System.out.println(parse);
///3 数组下标越界异常 ArrayIndexOutOfBoundsException
// int[] arr = new int[3];
// System.out.println(arr[5]);
//4 类型转换异常 ClassCastException
// Object obj = 123;
// String objStr = (String)obj;
/**---5-7 编译时异常:源码的时候,必须处理----*/
//5 文件找不到异常 FileNotFoundException
OutputStream out = new FileOutputStream( new File("") );
//6 IO 异常 IOException
out.write(65);
//7 类找不到异常 ClassNotFoundException
Class.forName("com.czxy.Hello");
}
}
2.error和exception有什么区别?
1, exception可以通过try..catch捕获, 进行相应的处理, 或者抛出由调用者处理
2, error 不可控制, 无法处理
3. 运行时异常与checked检查型异常有何异同?
checked检查型异常,又称为编译时异常,必须对异常进行处理(try-catch 或 throws)
运行时异常,不被检查型的异常,对异常可以处理,也可以不处理。
4. 如何自定义异常
自定义检查性异常类,继承 Exception 类。
自定义运行时异常类,继承 RuntimeException 类。
5 .final, finally, finalize的区别
(1)final:修饰符。
A).如果一个类被声明为final,就意味着它不能再派生出新的子类,不能作为父类被继承。
B).如果将变量或者方法声明为final,可以保证它们在使用中不被改变。
C).被声明final的方法只能使用,不能重写。
(2)finally:异常处理机制的一部分
A).finally结构使代码总会执行,而不管是否有异常。
B).使用finally常用于释放资源。
(3)finalize:Java中垃圾回收器执行的方法。
A).它是一个方法,属于java.lang.Object类。
B).在垃圾收集器执行的时候会调用的此方法,进行对象的回收,但在调用垃圾回收gc()后,并不能立即执行回收,JVM根据算法定时执行。
● final
public final class HelloFinal {
/*
public final String str = "jack";
public void demo(){
//1.B 如果将变量或者方法声明为final,可以保证它们在使用中不被改变
str = "rose";
}
*/
}
/*
// 1.A final 修改的类,不能被继承
class Son extends HelloFinal {
}
public class HelloFinal2 {
public final void demo(){
}
}
/*
class Son2 extends HelloFinal2 {
//1.C 被声明final的方法只能使用,不能重写。
@Override
public void demo() {
super.demo();
}
}
*/
● finally
try {
System.out.println();
} catch (Exception e) {
e.printStackTrace();
} finally {
//释放资源
}
目录
5 .final, finally, finalize的区别