2010-10-19 15 views
5

Java in Eclipse zu programmieren, bin ich gewohnt, mit Ausnahmen fertig zu werden. In C# mit VisualStudio kann ich nicht sagen, dass "Exceptions auslösen" auf einer Methode ... Nach viel Code fand ich viele Ausnahmen, und musste sie fangen, wie ich sie während des Testens gefunden habe. Ich möchte dazu gezwungen werden, sie zu bearbeiten, damit VisualStudio sagen kann, dass Sie hier einen Haken brauchen oder ich werde Sie nicht weitermachen lassen. Ist das möglich?Kein Erzwingen der Ausnahmebehandlung?

Dank

Antwort

8

Nr C# zwingen, keine Ausnahmen zu behandeln. Dies war eine bewusste Designentscheidung seitens der Sprachdesigner.

Für Details über warum, siehe The Trouble With Checked Exceptions, wo Anders Hejlsberg diskutiert, warum sie nicht Teil von C# sind.

+0

Oh gut, schade :) Danke für die Antwort! – Johannes

+0

Welches, obwohl angeblich fehleranfällig, gibt einem Programmierer die Freiheit zu sagen "Ich weiß, was ich tue" –

+0

@Johannes: Bevor Sie dies als "schlecht" denken, würde ich dieses Interview lesen. Früher dachte ich, das sei ein Fehler in C#, aber ich habe mich völlig dazu bekehrt, das als "Profi" zu sehen ... –

0

Nein, das ist nicht möglich.

Sie können die .NET-Bibliotheksmethode, die Sie in MSDN ausführen, nachschlagen: Die Ausnahmen, die von der Methode erwartet werden, werden dort dokumentiert. Anschließend können Sie entscheiden, welche Sie fangen möchten und welche nicht.

+0

Kein besserer Weg, als sie alle in der Dokumentation zu sehen? Es sollte eine Möglichkeit geben, dies in VisualStudio zu tun, wenn Sie mich fragen :) Eine Art von "Rechtsklick -> Ausnahmen, die explizit ausgelöst werden können" :) – Johannes

+0

@Johannes: True, das wäre nett, aber seit Kontext- sensitive Hilfe in Visual Studio ist ziemlich gut (drücken Sie einfach F1, während Sie den Cursor über den Methodennamen halten), die Nachschlage-Dokumentation geht ziemlich schnell. – Heinzi

0

Sie können various tools verwenden, um die Ausnahmen zu finden. Es gibt auch diese Sache für .NET 4 namens Code Contracts, die Ihnen helfen, Pre/Post-Bedingungen zu erzwingen und möglicherweise vermeiden einige Ausnahmen.

2

Nein, es gibt keine geprüften Ausnahmen in C#. Und die Gründe sind ziemlich einfach:

1) sie neigen dazu, nicht dort beabsichtigten Zweck zu erreichen, weil nicht jeder folgt die empfohlene Praxis entweder explizit Handhabung oder Weitergabe der Kette auf. Stattdessen werden sie von Entwicklern in der Mitte des Entwicklerstapels "gefressen".
2) da sie natürlich Teil der Dokumentation nicht ausführbaren Code sind, sollten sie in der Dokumentation gehen und Krempel den Code nicht Fläche

3) C#/Framework-Dokumentation in dev-Tools sind der ideale Ort für eine solche Dokumentation. Spielen Sie mit dem visuellen Studio-Objektbrowser herum, navigieren Sie zu der Methode und Sie werden sie im unteren Fensterbereich sehen.