Tool zum "Schreiben von guten Exceptions"

L0g4n

Lieutenant
Registriert
Sep. 2013
Beiträge
533
Hi Leute,

in einem Vortrag über Fehler- bzw. Ausnahmebehandlung muss ich ein Tool vorstellen, das wie schon
in der Überschrift gesagt einem hilft "gute Exceptions zu schreiben".
Ich habe schon zwar viel Programmiererfahrung jedoch habe ich darunter wie ein Tool aussehen soll Exceptions umzusetzen überhaupt keine Ahnung oO.
Es wurde lediglich auf solche Tools wie "FindBugs", "PMD", "EclEmma" oder "CodePro Analytix" verwiesen, die aber ja eher nicht das erfüllen, was ich suche.

Daher meine Frage an euch: Kennt ihr irgendwas so in der Art ?
 
Wie soll ein Tool beim Coden helfen können? Du könntest "Clean Code" zum Thema Exceptions lesen und dir daraus Hinweise notieren und vlt. ein Template für IntelliJ schreiben, das den gewonnenen Anforderungen entspricht.
 
Hi,
Ich denke das wäre Overkill.
Es soll ja schon so ein Tool geben, das dies leistet da man explizit nur eins vorstellen soll.
 
chied schrieb:
Wie soll ein Tool beim Coden helfen können?

In dem es Quelltext und/oder .class File analysiert und entsprechende Hinweise ausgibt. Beispiele solcher Tools wurden ja bereits genannt, die auch Empfehlungen für Exceptions geben.

PMD bietet z.B. diese Optionen:

http://pmd.sourceforge.net/pmd-4.3.0/rules/strictexception.html

Wenn die Tools nicht ausreichend sein sollten, erweitert man eines entsprechend den eigenen Wünschen. Sind ja fast alle OpenSource.
 
Hi,

danke das muss ich dann übersehen haben.
Also gibt dann PMD zum Beispiel einfach Warnung raus, wenn man gegen eine dieser Regeln verstößt ?
 
Wenn die entsprechende Regel aktiviert ist, ja. Gilt natürlich auch für FindBugs. Ist doch alles gut dokumentiert?
 
Hmm, also beim Parsen von Dateiformaten von dem anschließenden Verifizieren der Werte in gewisse Bereiche, wäre ein Template für mich recht hilfreich.

Beispiele:
Code:
        public PointCurve(String parseString)
        {
            List<double> listX = new List<double>();
            List<double> listY = new List<double>();

            String[] segments = parseString.Split('|');

            foreach (String node in segments)
            {
                String[] coordinates = node.Split(':');

                if (coordinates.Length != 2)
                {
                    throw new ArgumentException("Coordinate count is not 2 for '" + node + "'");
                }

                double x;
                if (!double.TryParse(coordinates[0], out x))
                {
                    throw new ArgumentException("Could not parse '" + coordinates[0] + "' into double");
                }

                double y;
                if (!double.TryParse(coordinates[1], out y))
                {
                    throw new ArgumentException("Could not parse '" + coordinates[1] + "' into double");
                }

                if (listX.Count != 0 && x <= listX[listX.Count - 1])
                {
                    throw new ArgumentException("Next point at X '" + coordinates[0] + "' is smaller or equal to the previous point at X '" + listX[listX.Count - 1].ToString() + "'");
                }

                listX.Add(x);
                listY.Add(y);
            }

            this.x = listX.ToArray();
            this.y = listY.ToArray();
        }

Code:
            if (this.solidCount > 45)
            {
                throw new ArgumentOutOfRangeException("This will exceed the dispinfo limit of 2048 displacements! Needs to be smaller or equal to 45 in a squared map! Solidcount: " + this.solidCount.ToString());
            }

Letzteres hätte ich zum Beispiel gerne automatisch in
Code:
throw new ArgumentOutOfRangeException("solidCount (" + this.solidCount.ToString() + ") bigger than 45");

Solche Passagen sind schon recht blöde CP-Arbeit. Je nach Parser und Genauigkeit der Fehlerausgabe ist das schon ein recht großer Teil des Codes.
Idealerweise mit entsprechenden Format-Methoden, nicht so wie ich faule Sau.
 
Zuletzt bearbeitet:
Zurück
Oben