ich brauche eine exception.Can i Fang verwenden versuchen zu werfen
Der try/catch-Block für den Fang eine Ausnahme ist und mit dieser Information etwas tun. Wenn Sie eine Ausnahme werfen müssen, werfen sie einfach
if (fileEntries.Length == 0)
{
throw new Exception("No *.csv files available");
}
diese Ausnahme nun geworfen werden, nach oben auf das Verfahren, das ein Verfahren, bei dem dieses Stück Code genannt befindet. Mit einem try/catch-Block können Sie nun entscheiden, auf welcher Ebene Sie diese Ausnahme abfangen möchten und die Informationen verwenden.
Beispiel
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");
}
}
wenn diese Ausnahme nicht abgefangen wird nach oben method1
reisen und das Programm vor der Hinrichtung zu stoppen/abbrechen drastisch. Sie können es auf dieser Ebene fangen und (wenn Sie zum Beispiel eine Konsolenanwendung haben) präsentieren die Informationen für den Benutzer:
void method1()
{
try
{
method2();
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
kann ich eine Ex-Pass obj mit Ausnahme einer Daten hinzufügen für weitere
überprüfen
Werfen Sie einen Blick auf den Konstruktor der Basis Exception es erlaubt Ihnen, eine string
als Informationsquelle zu übergeben oder eine additional exception als innere Ausnahme.
EDIT:
Wenn Sie erstellen Sie Ihre eigenen custom exception wie Corak vorgeschlagen. Sie könnten Ihren eigenen Konstruktor und geben zum Beispiel ein enum
für den Fehlercode definieren:
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;
}
}
Jetzt in method3
würden Sie werfen genau diese Art von Ausnahme:
void method3()
{
string[] fileEntries = Directory.GetFiles(filepath, "*.csv");.
if (fileEntries.Length == 0)
{
throw new MyObjectTransferException("No *.csv files available", ErrorCodes.E1);
}
}
und in method1
würden Sie brauchen, um fängt genau diese Art von Ausnahme:
void method1()
{
try
{
method2();
}
catch(MyObjectTransferException ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine(ex.ErrorCode);
}
}
Eine Ausnahme zu fangen ist das Gegenteil davon, sie zu werfen. Sie würden auch viele Beispiele finden, wenn Sie einfach nach 'C# werfen eine Ausnahme' suchen. – Rob
Siehe auch: [Ausnahmen und Ausnahmenbehandlung] (https://docs.microsoft.com/dotnet/csharp/programming-guide/exceptions/) – Corak