unterstützt Ich habe eine Schnittstelle, die es nennen wir IOperation
mit der einzigen MethodeException werfen in Interface-Implementierung, wenn Methodenargumente sind nur teilweise
void Operate(TimeSpan time);
Einer meiner Implementierungen ist nur auf Hardware-Einschränkungen aufgrund der Lage voll Millisekunden Handling zwischen 4 ms und 1000 ms.
1) Sollte ich eine Ausnahme auslösen, wenn jemand die Methode mit einer Zeit von weniger als 4 oder mehr als 1000 aufruft? Wenn ja, ist ein NotSupportedException
oder ein ArgumentOutOfRangeException
besser? Alternativ runden Sie bis zu 4 oder bis zu 1000 ab, wenn das Argument nicht passt.
2) Wenn die Zeit zwischen 4 und 1000 ist, aber die Eigenschaft TotalMilliseconds bruchstückhaft ist, ist es in Ordnung, auf volle Millisekunden zu runden? Oder eine Ausnahme auslösen?
Meine Lieblingsweise wäre, in beide Situationen eine NotSupportedException
zu werfen, weil nach der Schnittstelle die Argumente nicht ungültig sind und daher eine ArgumentOutOfRangeException
scheint nicht imho passen.
Darüber hinaus scheint interne Rundung irgendwie den Anrufer zu überstimmen, ohne ihn zu informieren. Auf der anderen Seite fühle ich mich schlecht über die nicht vollständig Erfüllung der Schnittstelle Vertrag, wie sollte der Anrufer auf meine NotSupportedExceptions
reagieren, da Schnittstellen gibt es Vertrauen zu dem Anrufer die Methoden sind nach Vertrag implementiert
Vielen Dank für Ihre Meinungen und die hilfreiche Links. Ich entschied mich, eine "NotSupportedException" in Fall 1 und Fall 2 zu werfen, um den Client nicht zu dominieren. Ich gab ihm eine bedeutungsvolle Nachricht. – Creepin