The following example shows code that attempts to run in a sandboxed solutuon. There are four buttons, each of which attempt a different type of action, as follows:
  - renderWebInfo_Click: This operation will be allowed to run in the sandbox.
  - renderWebInfoElevated_Click: This operation will not be allowed to run in the sandbox. The sandbox will catch the exception, so the catch{} block will not run.
  - accessProhibitedNamespace_Click: This operation will not be allowed to run in the sandbox. However, the exception will be caught by the catch{} block.
  - renderCrossSiteData_Click: This operation will not be allowed to run in the sandbox. The sandbox will catch the exception, so the catch{} block will not run

namespace SBWebPart.SandboxedWebPart
{
  [ToolboxItemAttribute(false)]
  public class SandboxedWebPart : WebPart
  {
    public SandboxedWebPart()
    {
    }
    LiteralControl output;
    protected override void CreateChildControls()
    {
      Button renderWebInfo = new Button();
      renderWebInfo.Text = "Access data in this site";
      renderWebInfo.Click += new EventHandler(renderWebInfo_Click);
      Button renderWebInfoElevated = new Button();
      renderWebInfoElevated.Text = "Use elevated privileges";
      renderWebInfoElevated.Click += new EventHandler(renderWebInfoElevated_Click);
      Button accessProhibitedNamespace = new Button();
      accessProhibitedNamespace.Text = "Create an HTTP connection ";
      accessProhibitedNamespace.Click += new EventHandler(accessProhibitedNamespace_Click);
      Button renderCrossSiteData = new Button();
      renderCrossSiteData.Text = "Access data in other site collections";
      renderCrossSiteData.Click += new EventHandler(renderCrossSiteData_Click);
      output = new LiteralControl();
      output.Text = "";
      this.Controls.Add(output);
      this.Controls.Add(new LiteralControl("<br />"));
      this.Controls.Add(renderWebInfo);
      this.Controls.Add(renderWebInfoElevated);
      this.Controls.Add(accessProhibitedNamespace);
      this.Controls.Add(renderCrossSiteData);
      base.CreateChildControls();
    }

    void renderWebInfo_Click(object sender, EventArgs e)
    {
      try
      {
        SPWeb thisWeb = SPContext.Current.Web;
        string message = string.Format("This web contains {0} subwebs", thisWeb.Webs.Count);
        output.Text = message;
       }
      catch(Exception ex)
      {
        output.Text = ex.Message;
      }
    }

    void renderWebInfoElevated_Click(object sender, EventArgs e)
    {
      try
      {
        SPSecurity.RunWithElevatedPrivileges(showWebCount);
      }
      catch (Exception ex)
      {
        output.Text = "My Caught Error: " + ex.Message;
      }
    }
    void showWebCount()
    {
      SPWeb thisWeb = SPContext.Current.Web;
      string message = string.Format("This web contains {0} subwebs", thisWeb.Webs.Count);
      output.Text = message;
    }

    void accessProhibitedNamespace_Click(object sender, EventArgs e)
    {
      try
      {
        System.Net.HttpWebRequest.Create("http://intranet.contoso.com");
        output.Text = "Success";
      }
      catch (Exception ex)
      {
        output.Text = "My Caught Error: " + ex.Message;
      }
    }

    void renderCrossSiteData_Click(object sender, EventArgs e)
    {
      try
      {
        SPWeb thisWeb = SPContext.Current.Web;
        SPSiteDataQuery crossSiteQuery = new SPSiteDataQuery();
        crossSiteQuery.Lists = "<Lists ServerTemplate='104' />";
        crossSiteQuery.Webs = "<Webs Scope='Recursive' />";
        string message = string.Format("There are {0} lists",
        thisWeb.GetSiteData(crossSiteQuery).Rows.Count.ToString());
        output.Text = message;
      }
      catch (Exception ex)
      {
        output.Text = "My Caught Error: " + ex.Message;
      }
    }
    protected override void RenderContents(HtmlTextWriter writer)
    {
      base.RenderContents(writer);
    }
  }
}