Voici une petite question tout simple:
[csharp]
try
{
    throw new FileNotFoundException();
}
catch (IOException ex2)
{
    Console.Out.WriteLine("Base Exception");
}
catch (FileNotFoundException ex1)
{
    Console.Out.WriteLine("FileNotFound");
}
Question : Quel est le résultat lors de l'exécution ?

Ce code ne fonctionnera pas .. Je dirais même ce code ne compilera pas :-). En effet, le compilateur détecte que l'on a dans l'ordre des catch une gestion des exceptions qui va englober celle définie en dessous. Il est dès lors obligatoire en .net de définir les catch dans l'ordre du plus spécialisé au moins ...