title: When to use try/catch blocks?
body: <p>I've done my reading and understand what a Try/Catch block does and why it's important to use one.  But I'm stuck on knowing <em>when/where</em> to use them.  Any advice? I'll post a sample of my code below in hopes that someone has some time to make some recommendations for my example. </p>
  
  <pre><code>    public AMPFileEntity(string filename)
      {
          transferFileList tfl = new transferFileList();
          _AMPFlag = tfl.isAMPFile(filename);
          _requiresPGP = tfl.pgpRequired(filename);
          _filename = filename.ToUpper();
          _fullSourcePathAndFilename = ConfigurationSettings.AppSettings.Get("sourcePath") + _filename;
          _fullDestinationPathAndFilename = ConfigurationSettings.AppSettings.Get("FTPStagePath") + _filename;
          _hasBeenPGPdPathAndFilename = ConfigurationSettings.AppSettings.Get("originalsWhichHaveBeenPGPdPath");
      }
  
  
      public int processFile()
      {
  
          StringBuilder sb = new StringBuilder();
          sb.AppendLine(" ");
          sb.AppendLine("    --------------------------------");
          sb.AppendLine("     Filename: " + _filename);
          sb.AppendLine("     AMPFlag: " + _AMPFlag);
          sb.AppendLine("     Requires PGP: " + _requiresPGP);
          sb.AppendLine("    --------------------------------");
          sb.AppendLine(" ");
  
          string str = sb.ToString();
          UtilityLogger.LogToFile(str);
          if (_AMPFlag)
          {
              if (_requiresPGP == true)
              {
                  encryptFile();
              }
              else
              {
                  UtilityLogger.LogToFile("This file does not require encryption. Moving file to FTPStage directory.");
                  if (File.Exists(_fullDestinationPathAndFilename))
                  {
                      UtilityLogger.LogToFile(_fullDestinationPathAndFilename + " alreadyexists. Archiving that file.");
                      if (File.Exists(_fullDestinationPathAndFilename + "_archive"))
                      {
                          UtilityLogger.LogToFile(_fullDestinationPathAndFilename + "_archive already exists.  Overwriting it.");
                          File.Delete(_fullDestinationPathAndFilename + "_archive");
                      }
                      File.Move(_fullDestinationPathAndFilename, _fullDestinationPathAndFilename + "_archive");
                  }
                  File.Move(_fullSourcePathAndFilename, _fullDestinationPathAndFilename);
              }
          }
          else
          {
              UtilityLogger.LogToFile("This file is not an AMP transfer file. Skipping this file.");
          }
  
              return (0);
      }
  
  
      private int encryptFile()
      {
  
          UtilityLogger.LogToFile("This file requires encryption.  Starting encryption process.");
  
  
          // first check for an existing PGPd file in the destination dir.  if exists, archive it - otherwise this one won't save.  it doesn't overwrite.
          string pgpdFilename = _fullDestinationPathAndFilename + ".PGP";
  
  
  
          if(File.Exists(pgpdFilename))
          {
              UtilityLogger.LogToFile(pgpdFilename + " already exists in the FTPStage directory.  Archiving that file." );
              if(File.Exists(pgpdFilename + "_archive"))
              {
                  UtilityLogger.LogToFile(pgpdFilename + "_archive already exists.  Overwriting it."); 
                  File.Delete(pgpdFilename + "_archive");
              }
              File.Move(pgpdFilename, pgpdFilename + "_archive"); 
          }
  
          Process pProc = new Process();
          pProc.StartInfo.FileName = "pgp.exe";
  
          string strParams = @"--encrypt " + _fullSourcePathAndFilename + " --recipient infinata --output " + _fullDestinationPathAndFilename + ".PGP";
  
          UtilityLogger.LogToFile("Encrypting file.  Params: " + strParams);
          pProc.StartInfo.Arguments = strParams;
          pProc.StartInfo.UseShellExecute = false;
          pProc.StartInfo.RedirectStandardOutput = true;
          pProc.Start();
          pProc.WaitForExit();
  
          //now that it's been PGPd, save the orig in 'hasBeenPGPd' dir
          UtilityLogger.LogToFile("PGP encryption complete.  Moving original unencrypted file to " +  _hasBeenPGPdPathAndFilename); 
          if(File.Exists(_hasBeenPGPdPathAndFilename + _filename + "original_which_has_been_pgpd"))
          {
              UtilityLogger.LogToFile(_hasBeenPGPdPathAndFilename + _filename + "original_which_has_been_pgpd already exists.  Overwriting it.");
              File.Delete(_hasBeenPGPdPathAndFilename + _filename + "original_which_has_been_pgpd");
          }
              File.Move(_fullSourcePathAndFilename, _hasBeenPGPdPathAndFilename + _filename + "original_which_has_been_pgpd");
  
          return (0);
  
      }
  }
  </code></pre>
  
  <p>}</p>