e.printStackTrace()可以打印异常信息
当try语句中出现异常是时,会执行catch中的语句,java运行时系统会自动将catch括号中的Exception e 初始化,也就是实例化Exception类型的对象。e是此对象异常名称。然后e(引用)会自动调用Exception类中指定的方法,也就出现了e.printStackTrace();。printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因
即使catch块没有捕获到异常,finall块也会被执行
finally语句块是在try-catch块中的return后,返回调用者之前执行
try catch finally 语句块儿之内没有任何return语句,会调用语句块之外的return语句
try catch finally语句块
1.用于捕捉异常。
2.当try中有错误出现时,会被catch捕捉,并且做出相应的反应。
3.当有final时,该语句块中的程序会在catch后执行【即使catch有return】,返回函数前执行。
4.当try catch final语句块中都没有return时,程序会从语句块外部读取;否则会按照final-->catch-->try中是否有return返回。
1)有错误情况下
如果finally块中有return语句,try语句 -> catch -> finally -> finally.return
如果finally块中没有return语句,try语句 -> catch -> finally -> catch.return
2)无错误情况下
如果finally{}块中有return语句,try语句 -> finally -> finally.return
如果finally{}块中没有return语句,try语句 -> finally -> try.return
return在try-catch-finally中:
1、不管有没有出现异常,finally块中代码都会执行;
2、当try和catch中有return时,finally仍然会执行;
3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,仍然是之前保存的值),所以函数返回值是在finally执行前确定的;
4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。
1.e.printStackTrace()可以输出异常信息
2.-1为抛出异常的习惯写法
3.如果方法中try,catch,finally中没有返回语句,则会调用这三个语句块之外的return结果
4.finally块无论如何,不管前面是正常还是异常,都要执行。
5.finally 在try中的return之后 在返回主调函数之前执行。
在try-catch-finally中:
1、不管有无异常,try和catch中有无return,finally块中代码都会执行;
2、e.printStackTrace()可以输出异常信息
3、-1为抛出异常的习惯写法
4、如果方法中try、catch、finally中没有返回语句,则调用这三个语句块之外的return结果
5、finally在try或catch中的return之后,在返回主调函数之前执行。
try catch finally中没有return时,使用三者外面的return。
finall是在try,catch 的return语句块执行后,返回调用者之前执行的
这里用result2去接受test2方法的返回值,只是调用一下这个方法而已,把这个方法的内容执行一遍并输出,用不着考虑result2该如何用。
try-catch-finally
try{ //一些会抛出异常的方法 }catch(Exception e){ //处理该异常的代码块 }catch(Exception2 e){ //处理Exception2的代码块 }...(n个catch块)...{ }finally{ //最终将要执行的一些代码 }
try catch finally没有return,则可以继续向下执行
e.prinStackTrace()方法打印出具体的异常信息。
在try{}中没有return可以在最后括号外写代码,写return
finally中不可以写return
try-catch-finally的代码块中无return语句,那么自动调用除此之外的return语句
打印异常的具体信息
e.printStackTrace();
java
divider(除数); result(结果)
每次循环,divider减一,result=result+100/divider
如果异常,打印输出“抛出异常了!!!”,返回-1,否则返回result.
finally语句是在try块和catch语句块中的return语句执行完后,返回到调用者之前执行的
如果try-catch-finally语句中没有return,则调用者调用时会返回其他语句中的return
1、不管有木有出现异常,finally块中代码都会执行;
2、当try和catch中有return时,finally仍然会执行;
3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;
4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。
getMessage()是用来返回错误详细信息的,prinStackTrace()是指出错误的具体位置
try-catch语句块是从上倒下依次执行的,其中改变的变量也会跟着改变
异常信息打印方法printStackTrace
finally语句在返回值之前执行
正常情况下return表示方法结束,它后面的语句不执行,但finally会在try{}catch{}语句块执行后执行。
尽管在catch中已经return了,但是finally的语句还是会执行的
异常的具体信息 .printStackTrace
e.printStackTrace();
printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。
编程思路和逻辑方式,这节课很有用,收藏!
try中哪一句出了问题,那一句是不会执行的.
句中返回了result,后面返回了其他数值就会把数值赋给result
e.printStackTrace();//打印出来异常信息
try-catch-finally
try{
//一些会抛出异常的方法
}catch (Exception e){
//处理该异常的代码块
}catch (Exception2 e){
//处理Exception2的代码块
} finally {
//最终将要执行的代码
}
e.printStachTrace();-打印出具体的异常信息。
try catch finally语句先执行catch然后再finally 最后返回main方法中的调用者
try{
while(divider>-1){
result=(result+100)/divider;
divider--;
return result;
}
}catch(Exception e){
e.printStackTrace();//打印异常的具体信息
System.out.println("抛出异常了");
return -1;
}
try{
while(divider>-1){
result=(result+100)/divider;
divider--;
return result;
}
}catch(Exception e){
e.printStackTrace();//打印异常的具体信息
System.out.println("抛出异常了");
return result=999;
}
flnally
{//前两部分都执行完包括return语句之后,返回main函数之前被调用
System.out.println("finally!!!");
System.out.println(result);
}
return 111;//前三块如果没有return,则最后的return即是返回main函数的值
try catch finally语句先catch然后再finally 最后返回main方法中的调用者
try块中放可能会出现异常的代码,catch块中捕获异常,并做出相应的处理,finally块中用来放不管前面出不出现异常都要执行的代码。
为什么在test2中打印出来的e.printStackTrance在最后?
finally语句块是在try块和catchreturn语句执行完之后,在返回调用者之前执行的 。
如果在trycatch中没有任何return语句则会调用trycatchfinally之外的return语句。
1,try-catch-finally执行顺序:
①执行try{}块
②如果try{}块有异常产生,执行catch{}块
③无论有没有异常都要执行finally{}块,这里可以看出只要finally中有return,必然返回finally{}中的return
2,return的执行,
①,如果finally{}块中有return语句,只执行finally{}块中的return语句
②,如果finally{}块中没有return语句,如果try{}有异常,则返回catch{}中的return语句,不然执行try{}中return语句
如果finally语句块中有return语句,try/catch语句块中的return语句会被忽视
在try-catch-finally之外还可以有return,这种情况下在catch和try里面两者之一能有return,不能同时有,且当当有两者之一语句执行时会返回两者之一的return,不会返回语句外的return值,当两者之一的return不执行时才会返回语句外的return值。finally与语句外不能同时存在return,当否则会报错