2016-12-14 1 views
1

Ich weiß in C# wir brauchen keine Methode, um die Ausnahmen in Methodensignatur explizit zu definieren, die es werfen könnte. Aber ich würde gerne wissen, wie wir mit Szenarien umgehen, in denen die Aufrufer-Methode die möglichen Ausnahmen behandeln will, die durch die aufgerufene Methode ausgelöst werden?Wie weiß die aufrufende Methode, welche Ausnahmen von der aufgerufenen Methode ausgelöst werden?

Lassen Sie mich mit meiner Frage klar sein.

Angenommen, es ist eine Methode in einer DLL-Datei definiert als

public string DoSomething() 
{ 
    // This method do something and returns a string 
} 

Jetzt als Anrufer Ich habe Kenntnis davon, welche Methode erwartet und was es gibt als result.But wie kann ich wissen, was die möglich sind Ausnahmen, die von dieser Methode ausgelöst werden.

In jave haben wir wirft keyword. Wenn ich also in Java gleiche Methode wurde definiert, dann könnte ich so etwas wie unten

getan haben
public String doSomething() throws SomeException { 
    // do something 
    throw new SomeException(); 
} 

Auf diese Weise Aufrufer dieser Methode weiß, was Ausnahmen auf ihrer Seite behandelt werden müssen.

Wie erreichen wir dies in C#, da C# nicht das Schlüsselwort in Methodensignatur hat?

Ein möglicher Weg wäre, ein generisches Exception Objekt zu fangen. Aber wieder eine generische Ausnahme zu fangen ist eine schreckliche Möglichkeit, mit Ausnahmen umzugehen.

+1

Sie können immer Xml-Kommentare verwenden und dort alle Ausnahmen auflisten, die diese Methode auslöst. Auf diese Weise werden Sie in der Lage sein zu sehen, während der Eingabe wegen Intellisense –

+1

Selbst mit Java, Sie nicht nur Pokemon Ausnahmebehandlung verwenden und es einen Tag nennen. In jedem Fall müssen Sie verstehen, welche Ausnahmen die Methode auslöst, mit der der Aufrufer * rational umgehen kann und die immer eine menschliche Interpretation erfordert. –

+0

@Damien_The_Unbeliever Ja, aber in Java, wenn die aufgerufene Methode eine einheitliche oder benutzerdefinierte Ausnahme zurückwirft (für alle Ausnahmen, mit denen diese Methode zu tun hat), muss sich der Aufrufer nur um diese Ausnahme kümmern. Aber in C# wie weiß selbst Anrufer, was zu handhaben ist, da Methodensignatur nichts gibt. Gibt es neben den Antworten von m.rogalski und user3185569 noch eine andere Möglichkeit, dies zu erreichen? Bei allem Respekt, aber ein Java-Entwickler zu sein, überzeugt mich nicht, alle Ausnahmen zu definieren, die von meiner Methode in einer XML-Datei ausgelöst werden. – amanraj

Antwort

1

Es gibt einen Abschnitt in der XML-Dokumentation, die für diesen Zweck gewidmet:

/// <summary> 
/// Does something 
/// </summary> 
/// <exception cref="System.OutOfMemoryException"></exception> 
/// <returns></returns> 
public string DoSomething() 
{ 
    // This method do something and returns a string 
} 

Dies ermöglicht der Designer der API über Informationen an die Kunden zu liefern, was Ausnahmen von diesem Methodenaufruf zu erwarten. Wie folgt aus:

enter image description here

Sie können diese XML-Linien erzeugt erhalten durch Schlagen / dreimal so hoch wie die, während der Cursor über dem Verfahren ist.

Verwandte Themen