JAVA中的异常及两种异常处理的方法
首先,
java中常见的异常有:
NullPointerException(空指针异常)
ClassCastException(类型强制转换异常)
ArrayindexOutOfBoundsException(数组下标越界异常)
NumberFormatException(字符串转换为数字异常)
IOException(输入输出异常)
FileNotFoundException(文件未找到异常)
NoSuchMethodException(方法未找到异常)
······
NullPointerException:
简单地说就是调用了未经初始化的对象或者是不存在的对象,特别是对于数组,数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始化(如果要调用的话)。
ClassCastException:
强制类型转换分为基本数据类型转换和引用数据类型转换两种,对于引用数据类型来说,一般就是把父类型转换成子类型(因为子类型比父类型的内容丰富),但不是所有的父类型都可以转换子类型,例如:Object jpanel=new JPanel();JButton jpanel1=(JButton)jpanel;(虽然编译时不会报错,但在运行时会出现ClassCastException)。因为JPanel于JButton是同一个等级的组件,所以不能进行强制类型转换。
ArrayindexOutOfBoundException:
这个异常比较简单,就是说,数组的下标超出了数组定义时的界限。
NumberFormatException:
字符串转换成数字时,只有输入的字符串内容是数字才能实现强制转换,例如:String a="123a";int b = Integer.valueOf(a);(编译时不会出错,但在运行时会出现NumberFormatException)。
异常先说这么多吧,后续会继续补充。
现在说说如何处理异常吧,异常的处理有两种方法,处理异常和声明异常。
:lol: 处理异常:
try{
你要抓的有可能发生异常的代码
}catch(你要抓的异常代码会出现的类型在这加个变量名代表这种类型){
一旦异常出现,这代码块里面的代码会被执行
}finally{
这里的代码是即使出现异常或者没有出现异常,这段代码都会被执行
}
声明异常:
throws()必须将其添加到方法签名块的结束位置。
注意:如果有别的方法在调用这个方法时也必须在方法签名块的结束位置添加throws()将异常抛出。
例如:分别用处理异常和声名异常两种方式处理上边的NumberFormatException中的例子中出现的问题,
1. try{
String a="123a";
int b = Integer.valueOf(a);
}catch(NumberFormatException e){
e.printStackTrace();
}
如果忘了或者不清楚哪种异常可以在catch()的小括号中写Exception(因为Exception是最大的异常类)
2.
public class Test {
//主方法
public static void main(String[] args) throws Exception{
Main m = new Main();
m.study();
}
}
class Main{
public void study() throws Exception{
String a="123a";
int b = Integer.valueOf(a);
}
}
注:在方法后抛出异常,在调用的函数方法中也要抛出异常。