Comment obtenir de l'erreur numéro de ligne de code à l'aide de try-catch

Je veux obtenir le numéro de ligne de code qui génère l'erreur. Par exemple;

static void Main(string[] args)
{
    using (SqlConnection conn = new SqlConnection(bagcum))
    {
        SqlCommand cmd = conn.CreateCommand();
        cmd.CommandText = "DONTINSERT into GIVEMEERROR(CamNo,Statu) values (" + 23 + "," + 0 + ")";
        conn.Open();
        int n = cmd.ExecuteNonQuery();
    }
}

de sorte Que nous savons que le code ne fonctionne pas, il va jeter l'exception du numéro de Ligne de code qui est:

int n = cmd.ExecuteNonQuery();

Alors, comment pouvez obtenir le numéro de ligne de l'aide try-catch? J'ai essayé d'utiliser un StackTrace classe, mais il donne le numéro de ligne que 0:

static void Main(string[] args)
{
    try
    {
        using (SqlConnection conn = new SqlConnection(bagcum))
        {
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "DONTINSERT into GIVEMEERROR(CamNo,Statu) values (" + 23 + "," + 0 + ")";
            conn.Open();
            int n = cmd.ExecuteNonQuery();
        }        
    }
    catch (Exception ex)
    {
        System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);            
        Console.WriteLine("Line: " + trace.GetFrame(0).GetFileLineNumber());
    }
}

De SORTIE:

Line:0

Mise à jour:

Généralement l'erreur de la ligne de code est de 22 donc, je dois obtenir ce nombre.

Grâce

  • Si vous êtes dans RELEASE mode, le numéro de la ligne (entre autres) n'est plus dans la stacktrace. La manière la plus facile de compiler dans DEBUG mode. Si cela ne fonctionne toujours pas, vérifiez si vous avez plein les informations de Débogage dans les propriétés du projet\Advanced\Debug Info.
  • il est en mode Debug, et il s full Debug
  • Sont votre .pdb fichiers dans le même répertoire que les autres fichiers?
  • oui, il y a