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??