title: How to handle error in the calling method
body: <p>I don't have much experience with programming in a good <code>OO</code> way but I want to learn and today occurs a situation where I think I can improve my skills on error handling if I'm correct on my observations.</p>
  
  <p>I have an event which code is logically separated in two parts :</p>
  
  <pre><code>private void btnSave_Click(object sender, EventArgs e)
  {
      IList&lt;AppConfig&gt; AppConfigs = AppConfigService.All().Where(a =&gt; (a.IsActive == true) &amp;&amp; (a.ConfigProperty == "MaterialImages")).ToList();
      string ImageNameFilter = txtCode.Text;
  
      if (!ucFileExplorer.IsSavedImage(AppConfigs, ImageNameFilter))
      {
          MessageBox.Show("Error");
          return;
      }
  
      if (Save())
      {
          LoadForm&lt;Materials&gt;();
      }
  }
  </code></pre>
  
  <p>The second part is just calling the <code>Save()</code> method, but my question is about the first one. There I call a method which should copy an image selected with a <code>OpenFileDialog</code> and the whole logic is in my user control that I make for file browsing cause I use it in many forms. The method that actually do the coping is this:</p>
  
  <pre><code>public bool IsSavedImage(IList&lt;AppConfig&gt; AppConfigs, string ImageNameFilter)
  {
      bool IsCopied = false;
      try
      {
          string imgPath = AppConfigs[0].ConfigValue.ToString();
          File.Copy(selectedFile, imgPath + "\\" + ImageNameFilter + slectedFileName + ".jpeg");
          IsCopied = true;
      }
      catch (IOException copyError)
      {
          MessageBox.Show("Error saving image!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
          return false;
      }
      return IsCopied;
  }
  </code></pre>
  
  <p>And here start my questions. I think I need the <code>try-catch</code> clause here, because this is where the actual execution takes place and makes it easier to return correct status (true or false). But I think the actual <code>copyError</code> should be handled in the calling method (my btn Click event in this case). So I have two questions, what is the right way to handle this exception, and if I want to pass it to the place where the method is called how can I do it?</p>