ho alcune perplessità su come gestire al meglio le eccezioni.
vi faccio un esempio:
codice:
        protected void insertFile(object sender, EventArgs e)
        {
            filePath = "C:\\Documents and Settings\\Administrator\\Desktop\\Upload\\";
            string ext = System.Configuration.ConfigurationManager.AppSettings["videoExt"];
            string[] arr = ext.Split(' ');
            string extUpload;
            if (FileUpload1.HasFile)
            {
                filePath += FileUpload1.FileName;
                name = FileUpload1.FileName;
                extUpload = name.Substring(name.LastIndexOf('.') + 1);
                if (File.Exists(filePath))
                {
                    lblMessage.Text = "Il file già esiste";
                }
                else
                {
                    foreach (string estensioni in arr)
                    {
                        if (extUpload == estensioni)
                        {
                            try
                            {
                                //salva localmente
                                FileUpload1.SaveAs(filePath);
                                //calcola durata
                                Microsoft.DirectX.AudioVideoPlayback.Video video = new Microsoft.DirectX.AudioVideoPlayback.Video(filePath);
                                durata = Convert.ToDecimal(video.Duration);
                                //video.
                                lblMessage.Text = " ";
                                //query SP
                                insertData();
                                //invio ftp
                                sendFile();
                                //cancella file locale
                                localDelete();
                                break;
                            }
                            catch (Exception ex)
                            {
                                lblMessage.Text = ex.Message;
                            }
                        }
                        else
                        {
                            lblMessage.Text = "Estensione non supportata";
                        }
                    }
                }
            }
            else
            {
                lblMessage.Text = "File non caricato";
            }
        }
questo metodo a un certo punto ne richiama altri; questi altri metodi hanno anch'essi dei blocchi try/catch.
ad esempio:
codice:
        protected void insertData()
        {
            string eraser = "0";
            SqlCommand cmd = new SqlCommand("TNW_insert_spot", conn);
            cmd.CommandType = System.Data.CommandType.StoredProcedure;
            cmd.Parameters.Add("@nome_file_spot", SqlDbType.VarChar).Value = name;
            cmd.Parameters.Add("@descrizione", SqlDbType.VarChar).Value = descrizione.Text;
            cmd.Parameters.Add("@eraser", SqlDbType.Int).Value = Convert.ToInt32(eraser);
            cmd.Parameters.Add("@tipo_spot#", SqlDbType.Int).Value = Convert.ToInt32(ddlTipoSpot.SelectedValue);
            cmd.Parameters.Add("@durata_spot", SqlDbType.Decimal).Value = durata;
            try
            {
                conn.Open();
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                lblMessage.Text = ex.Message;
                //throw new Exception(ex.Message);
            }
            finally
            {
                conn.Close();
            }
        }
in sostanza è come se avessi creato un try nidificato.
come posso gestire al meglio queste situazioni??