1.try-catch-finally概述
try-catch-finally用于处理可能出现异常的语句,而不去通过throws抛出。如果try中在执行代码时发现了异常,便会new出异常对象,然后通过catch中的参数进行匹配,最后如果这个参数是异常对象是父类引用或自身引用,则匹配成功,执行catch中的代码。如果有finally,那么finally里面的代码是一定会执行的。
2.try-catch
class TryCatch{
public static void main(String[] args) {
Scanner scr= new Scanner(System.in);
System.out.println("请输入a值:");
int a= scr.nextInt();
System.out.println("请输入b值:");
int b= scr.nextInt();
try{
int c= a/b;
}
catch (Exception e)
{
System.out.println(e.getMessage()); //打印原因 / by zero
System.out.println(e.toString());//打印 异常名+原因 java.lang.ArithmeticException: / by zero
e.printStackTrace();//打印错误信息 异常名+原因+位置
}
}
public static int pi(int a,int b){
return a/b;//很明显b如果为0,会报错误
}
}
总结try-catch:try
和 catch
语句用于处理程序运行时可能发生的异常,以保证程序的稳定性和正确性。
3.try-finally
public class TryFinally {
public static void main(String[] args) {
System.out.println("在后面:"+sum());
}
public static int sum() {
int i=10; //i=10
try{
return i;//返回10
}
finally {
i++;//i=11
System.out.println("前面:"+i);//打印11
}
}
}
远行结果: 2.解释:如果finally执行的代码在return前面,那打印的应该都是11,如果执行return在前面,那么finally便不会执行;这个文题要同时保证两个原则 1.finally必须执行 2.遇到return必定结束方法。因此实际上java有自己的应对措施,相当于以下代码:
public class TryFinally {
public static void main(String[] args) {
System.out.println("在后面:"+sum());
}
public static int sum() {
int i=10; //i=10
int j=i;
i++;//i=11
System.out.println("前面:"+i);//打印11
return j;//返回10
}
}