JAVA finally语句

2019-04-13 21:36发布

finally语句本节通过一个例子熟悉带finally子语句的try-catch语句,语法格式如下:try{} catch(ExceptionSubClass e){} finally{} 其执行机制是:在执行try-catch语句后,执行finally子语句,也就是说,无论在try部分是否发生过异常,finally子语句都会被执行。但需要注意以下两种特殊情况:1.如果在try-catch语句中执行了return语句,那么finally子语句仍然会被执行。2.try-catch语句中执行了程序退出代码,即执行Systen.exit(0);,则不执行finally子语句(当然包括其后的所有语句)。下面的例子中模拟向货船上装载集装箱,如果货船超重,那么货船认为这是一个异常,将拒绝装载集装箱,但无论是否发生异常,货船都需要正点起航。class DangerException extends Exception{ final String message="超重"; public String warnmess() { return message; } } class CargoBoat{ int realContent; int maxContent; public void setMaxContent(int c) { maxContent=c; } public void loading(int m) throws DangerException{ realContent+=m; if(realContent>maxContent) { realContent-=m; throw new DangerException(); } System.out.println("目前装载了"+realContent+"吨货物"); } } public class Hello { public static void main(String args[]) { CargoBoat ship=new CargoBoat(); ship.setMaxContent(1000); int m=600; try { ship.loading(m); m=400; ship.loading(m); m=367; ship.loading(m); m=555; ship.loading(m); } catch(DangerException e) { System.out.println(e.warnmess()); System.out.println("无法再装载重量是"+m+"吨的集装箱"); } finally { System.out.println("货船将正点起航"); } } }目前装载了600吨货物
目前装载了1000吨货物
超重
无法再装载重量是367吨的集装箱
货船将正点起航