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: 
Your code works, but in `main`, the return value of `method1` is ignored. And calling `method1` in `method2` is unecessary.

You can let `method2` accept parameter `String[] strings`:

```
public static void method2(String[] strings) {

    for (String str : strings)
        System.out.println(str);
}

```

and pass the result of `method1` to `method2`:

```
String[] result = method1();
method2(result);//Will print the strings in the array that

```
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); 
} 

```