常见异常简析:
① java.lang.ArithmeticException 算数异常。当运行时出现算术的错误(比如,除零)抛出。
② java.lang.NullPointerException空指针异常。对null值调用属性和方法时抛出。
③ Java.long.ArrayIndexOutOfBoundsException 数组下标越界异常。当数组变量引用非法下标时抛出。
④ Java.long.NuberFormatException 数字格式化异常。当将字符串转成整形时,字符串中含有非数字的字符时抛出。
⑤ java.io.FileNotFoundException 文件未找到异常。当对文件进行操作时,错误的书写了文件路径时抛出。
⑥ java.sql.SQLException:Column "id2" not found 列名书写错误
⑦ java.sql.SQLException:Parameter index cut of range 占位符的数量和参数个数不匹配
⑧ com.mysql.jdbc.exceptions.jdbc4.MysqlSyntaxErrorException you have an error in your SQL syntax SQL语句书写错误
异常处理:捕获异常
1 try { 2 3 4 5 } catch (Exception e) { 6 7 e.printStackTrace() 8 9 } 10 finally{ 11 12 System.out.println("000000000"); 13 14 } 15 16
代码讲解:
① Try块中描述需要测试的代码,也就是可能会抛出异常的代码。Catch块中通过异常变量e,捕获try块中抛出的异常对象。当try块中抛出异常,会执行catch块中的代码。
② 在try快中如果抛出了异常。那么会终止try块中后面代码的运行,转入catch块中执行。
③ 如果一个try块,有多个catch块捕获异常,当try块抛出异常时,只会执行第一个匹配异常的catch块,其他catch块全部忽略。(多个catch块中,一般父类异常写在后面。)
finally{
System.out.println("000000000");
}
Finally块:
Finally块表示无论是否有异常,都会执行的语句块。通常用finally描述资源回收动作,比如:流的关闭,数据库的关闭,等等。
如果在try块或catch块中有return语句,那么finally块会在跳出方法之前执行。
如果在try块中关闭虚拟机(System.exit(0)),那么finally快不会执行。
异常执行的顺序:
先执行try块,顺序执行。如果有异常发生,转去catch块执行,同时终止try块中的其他代码。无论是否有异常,都会执行finally语句块。
throw new Exception();表示显示抛出异常对象。
异常的分类:
1、编译期异常:要求必须进行捕获异常,如果不进行异常捕获,那么会发生编译错误。所以编译期异常,也叫检查异常。
2、运行期异常:开发者可以捕获,也可以不捕获。如果不捕获,也不会发生编译错误。所有的运行期异常都是RuntimeException 的子类。所以,运行期异常,也叫非检查异常。
throws为方法修饰符。表示一个方法可能会抛出某种异常。那么,调用该方法时,就需要捕获该方法抛出的异常。
//得到1970年1月1日到当前时间的毫秒数
Long x=System.currentMillis();
System.out.println(x);
垃圾回收条件:
1、该对象没有被变量所指。
2、该对象没有被使用
垃圾回收由虚拟机控制,程序员无法干预,但可以通过System.gc()加快垃圾回收的速度。
//得到用户当前的工作目录
String path=System.getProperty(“user.dir”);
System.out.println(path);
日期相关的类:
@Deprecated为方法的注解,表示该方法是过时的方法,可以用,但有更好的方法去替代该方法。
Date d=new Date();
//得到年份
Int year=d.getYear();
//得到月份
Int month=d.getMonth();
//得到日期
Int date=d.getDate();
System.out.println((1900+year));
包 |
父类 |
类 |
方法 |
备注 |
java.util |
Date |
|||
java.long |
Math |
Random() |
||
String |
Final类型,不能有子类 |
|||
包装类:包装类对象中包含的值不变。
String a=”abc”;和String b=new String(“abc”);的区别:
变量a指向的是数据段中的字符串常量对象。而变量b指向的是堆空间中的字符串对象。不过,在堆空间中存放的字符串常量,必须以字符串常量作为模板,拷入堆空间。所以,通过new String(“abc”)创建的字符串对象,可能产生两个字符串对象。一个在数据段中,一个在堆中。
子类重写父类的方法,方法名、返回类型、参数列表都要一值。要求是访问修饰符要大于或等于父类方法。抛出的异常要小于或等于父类方法。