JAVA异常总结
异常类 Exception 分为运行时异常和非运行时异常,我们主要学习了解了Exception的处理
处理Exception主要有5个关键字,分别是:try,throws,throw,catch,finally
-
try
通过运行try中的代码尝试捕获异常,若try中代码存在Exception类的异常,则程序会跳入catch中运行catch中的代码,通常一个try可对应一个或者多个catch -
throws
用在方法声明后面,用来声明一个方法可能产生的所有异常,不做任何处理而是将异常往上传,谁调用该方法就抛给谁处理 -
throw
用在方法体内,抛出一个具体的异常类型 -
catch
catch语句包含要捕获异常类型的声明,如果try语句块中发生的异常包含在 catch 块中,异常会被传递到该 catch 块 -
finally
finally 用来创建在 try 代码块后面执行的代码块.无论是否发生异常,finally 代码块中的代码总会被执行
finally 代码块出现在 catch 代码块后
特别注意
当try语句块和finally语句块当中都存在return时,程序会从finally语句块中的return退出.
而当try语句块和finally语句块当中都存在System.exit()时,程序会从try语句块中的System.exit()退出
因为程序会在finally语句块运行完毕之后再进行return操作,尽管try语句块中存在return,程序也会跳过return运行finally语句块中代码,而System.exit()相当与强制关机
关键字的简单的运用
public class People {
private String name;
private int age;
public People(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
}
public static void main(String[] args){
int[] arr = {1,2,3};
int[]arr={1,2,3};
People p=new People("zs",10);
try {
int value=arr[4];
String name=p.getName;
}catch (ArrayIndexOutOfBoundsException e){
e.printStackTrace();
}catch (NullPointerException e){
e.printStackTrace();
}catch (Exception e){
e.printStackTrace();
}finally {
System.out.println("结束");
}
}
public static void toJson(Object o,Class c)throws Exception{
Field[] fields = c.getDeclaredFields();
for (int i=0;i<fields.length;i++){
if(fields[i].get(o) instanceof String){
System.out.println('"'+fields[i].getName()+'"'+':'+'"'+fields[i].get(o)+'"');
}else{
System.out.println('"'+fields[i].getName()+'"'+':'+fields[i].get(o));
}
}
}