首页 > 代码库 > 异常处理、常见异常说明

异常处理、常见异常说明

常见异常简析:

①  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为方法修饰符。表示一个方法可能会抛出某种异常。那么,调用该方法时,就需要捕获该方法抛出的异常。

 

 

 

 

 

 

 

 

 

//得到197011日到当前时间的毫秒数

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”)创建的字符串对象,可能产生两个字符串对象。一个在数据段中,一个在堆中。

 

子类重写父类的方法,方法名、返回类型、参数列表都要一值。要求是访问修饰符要大于或等于父类方法。抛出的异常要小于或等于父类方法。

异常处理、常见异常说明