疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java中try,return ,finally,throw使用总结


 

  Java中try,return,finally,throw使用总结:

  (1)当try中抛出异常且catch中有return语句,finally中没有return语句,java先执行catch中非return语句,再执行finally语句,最后执行catch中return语句。详见情况一。

  (2)当try中抛出异常且catch中有return语句,finally中也有return语句,java先执行catch中非return语句,再执行finally中非return语句,最后执行finally中return语句,函数返回值为finally中返回的值。详见情况二。

  (3)Throw(无能是catch中还是非catch中)后面不能再跟code,否则编译不能通过。详见下面情况三,四,五。

  Return,finally总结:

  情况一,代码如下:

  public class Test {

  public int testTry(){

  FileInputStream fi=null;

  try{

  fi=new FileInputStream("");

  }catch(FileNotFoundException fnfe){

  System.out.println("this is FileNotFoundException");

  return 1;

  }catch(SecurityException se){

  System.out.println("this is SecurityException");

  }finally{

  System.out.println("this is finally");

  }

  return 0;

  }

  public static void main(String[] args) {

  Test t=newTest();

  System.out.println(t.testTry());

  }

  }

  Output:

  this isFileNotFoundException

  this is finally

  1

  情况二,代码修改如下:

  public class Test {

  public int testTry(){

  FileInputStream fi=null;

  try{

  fi=new FileInputStream("");

  }catch(FileNotFoundException fnfe){

  System.out.println("this is FileNotFoundException");

  return 1;

  }catch(SecurityException se){

  System.out.println("this is SecurityException");

  }finally{

  System.out.println("this is finally");

  return 3;

  }

  //return 0;

  }

  public static void main(String[] args) {

  Test t=newTest();

  System.out.println(t.testTry());

  }

  }

  Output:

  this isFileNotFoundException

  this is finally

  3

  ----------------------------------------------------

  Return throw总结:

  情况三:

  public class Test {

  public static void main(String[] args) {

  Test t=new Test();

  try{

  System.out.println(t.testTry());

  }catch(Exception e){

  System.out.println("this is exception");

  }

  }

  public int testTry()throws Exception{

  FileInputStream fi=null;

  try{

  fi=new FileInputStream("");

  }catch(FileNotFoundException fnfe){

  //System.out.println("this is FileNotFoundException");

  throw new Exception();

  return 1;

  }catch(SecurityException se){

  System.out.println("this is SecurityException");

  }finally{

  System.out.println("this is finally");

  }

  return 0;

  }

  }

  >javac Test.java

  Test.java:22:无法访问的语句

  Return 1;

  情况四:

  public class Test {

  public static void main(String[] args) {

  Test t=new Test();

  try{

  System.out.println(t.testTry());

  }catch(Exception e){

  System.out.println("this is exception");

  }

  }

  public int testTry()throws Exception{

  FileInputStream fi=null;

  try{

  fi=new FileInputStream("");

  }catch(FileNotFoundException fnfe){

  //System.out.println("this is FileNotFoundException");

  throw new Exception();

  System.out.println("after throw exception");

  // return 1;

  }catch(SecurityException se){

  System.out.println("this is SecurityException");

  }finally{

  System.out.println("this is finally");

  }

  return 0;

  }

  }

  >javac Test.java

  Test.java:22:无法访问的语句

  System.out.println("this is SecurityException");

  情况五:

  public class Test {

  public static void main(String[] args) {

  Test t=new Test();

  try{

  t.testTry();

  }catch(Exception e){

  System.out.println("this is exception");

  }

  }

  public void testTry()throws Exception{

  throw new Exception();

  System.out.println("this is testTry method");

  }

  }

  >javac Test.java

  Test.java:22:无法访问的语句

  System.out.println("this is testTry method");