title: Should my method throw its own exception, or let .NET throw if a file doesn't exist?
body: <p>Here is my code:</p>
  
  <pre><code>public void ReadSomeFile(string filePath)
  {
      if (!File.Exists(filePath))
          throw new FileNotFoundException();
  
      var stream = new FileStream(filePath, ....)
      .....
  }
  </code></pre>
  
  <p>Should I throw an exception myself (see the <code>File.Exists</code> check)? <code>FileStream</code> will already throw <code>FileNotFoundException</code> if the the file doesn't exist. What is good programming practice here? Code analysis says that we should validate our parameters. But if I am passing that parameter directly to another method (mine or someone else code) and that method will throw exception itself, then what is advantage of validating argument in my code?</p>