i besoin de jeter un exception.Can j'utilise attraper try
Le bloc try/catch est pour attraper une exception et faire quelque chose avec cette information. Si vous avez besoin de lancer une exception, il suffit de jeter
if (fileEntries.Length == 0)
{
throw new Exception("No *.csv files available");
}
cette exception sera maintenant jeté vers le haut pour la méthode qui a appelé une méthode où ce morceau de code est situé. En utilisant un bloc try/catch, vous pouvez maintenant décider à quel niveau vous voulez attraper cette exception et utiliser l'information.
Exemple
void method1(){ method2(); }
void method2(){ method3(); }
void method3()
{
string[] fileEntries = Directory.GetFiles(filepath, "*.csv");.
if (fileEntries.Length == 0)
{
throw new Exception("No *.csv files available");
}
}
sinon pris cette exception se rendra vers le haut pour method1
et arrêter votre programme d'exécution/avorter de manière drastique. Vous pouvez l'attraper à ce niveau et (si par exemple vous avez une application console) présente les informations à l'utilisateur:
void method1()
{
try
{
method2();
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
puis-je passer un ex obj à l'exception d'ajouter une donnée pour plus de vérifier
Jetez un oeil au constructeur de la Exception de base, il vous permettra de passer un string
comme source d'information, ou un additional exception comme exception interne.
EDIT:
Si vous créez votre propre custom exception comme suggéré par Corak. Vous pouvez définir votre propre constructeur et passer par exemple un enum
pour le code d'erreur:
public enum ErrorCodes
{
E1,
E2,
S4,
P5
}
public class MyObjectTransferException : Exception
{
public object ErrorCode { get; set; }
public MyObjectTransferException(string message, ErrorCodes code) : base(message)
{
this.ErrorCode = code;
}
}
Maintenant en method3
vous jetterait exactement ce type d'exception:
void method3()
{
string[] fileEntries = Directory.GetFiles(filepath, "*.csv");.
if (fileEntries.Length == 0)
{
throw new MyObjectTransferException("No *.csv files available", ErrorCodes.E1);
}
}
et method1
vous devez attraper exactement ce type d'exception:
void method1()
{
try
{
method2();
}
catch(MyObjectTransferException ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine(ex.ErrorCode);
}
}
Attraper une exception est le contraire de la lancer. Vous trouverez également de nombreux exemples si vous recherchez simplement 'C# throw an exception'. – Rob
Voir aussi: [exceptions et gestion des exceptions] (https://docs.microsoft.com/dotnet/csharp/programming-guide/exceptions/) – Corak