Question: When to examine the `InnerException` property of the `Exception` class and its derivatives? Microsoft's "Best practices for exceptions" doesn't provide any advise on when to examine for inner exceptions. Should I do it only when exceptions are rethrown and caught in my code? Should I do it always, even when I enclose in `try-catch` block standard functions like `System.IO.File.Move`?

Answer: 
If you want that the data "flows" trough main as you should do this:

```
public static void main(String args[]){
      String[] arr = method1();
      method2(arr);
      System.exit(0); 
}   

public static String[] method1(){
     String[] xs = new String[] {"sunshine","road","73","11"};
     String[] test = new String[4];
     test[0]=xs[0];
     test[1]=xs[1];
     test[2]=xs[2];
     test[3]=xs[3];
     return test;
}

public static void  method2(String[] arr){ 
    for(String str : arr){
        System.out.println(str); 
    } 
}

```
You are almost there: the return of your `method1()` should be used in the first call (you are actually ignoring it), and you have to use that return value (I've made some notes in the code aswell):

```
public static void main(String args[]) {
  String[] result = method1();  //TAKE THE VALUE HERE
  method2(result);//pass the result here as parameter
  System.exit(0); //there's no need of this, the program will exit when method2 is finished
}  

```

So edit your `method2` for getting the result of `method1` as parameter

```
public static void  method2(String[] arrayToPrint){ 
    for(String str : arrayToPrint)
        System.out.println(str); 
} 

```