Question: What is the difference (if any) in writing:

```
if (File.Exists(filePath)) 
    //Something
else
    throw new FileNotFoundException();

```

And surrounding the if/else block, above, in a try brace with a catch. 

In fact, is the catch needed? If so, what would it catch? Or perhaps a better comparison is to put the if part of the above block in a try brace (without the if statement) and catch a `FileNotFoundException`, throwing up the call stack (throw).

Thanks

Answer: 
By surrounding the if block with a try catch means you are going to have to handle the missing file there and then in the catch (see @lukas's answer). If you are going to handle the missing file in this code, then you don't need the else-throw, because you already know the file is missing from the first if. On the other hand, if you want the calling code (somewhere higher up the call stack) to handle the missing file, then passing that information on in an exception is ok, but you don't want to then go an wrap the throw in a try-catch because it won't get thrown out of this block of code.
One is safer than the other.

When you check if a file exists, nothing guarantees that file is there further down the execution of the method.

If you surround it with a `Try / Catch` block, you can elegantly catch the glitch, act accordingly and wrap up any thing you want to in the `Finally` block. For example, closing the stream to the file.