Ich bin krank von encapsuling jeden Anruf von asType
mit try/catch
Block wie:Wie kann man einige Groovy Type Conversions überladen, um try/catch von NumberFormatException zu vermeiden?
def b = ""
def c
try {
c = b as Integer
}
catch (NumberFormatException) {
c = null
}
println c
stattdessen würde Ich mag in meinem Code folgendes schreiben:
def b = ""
def c = b as Integer
und wenn b
ist nicht gut formatiert , dann möchte ich null
c
zugewiesen werden
Also wie kann ich dieses Standardverhalten für dieüberladenBetreiber?
Ist es riskant, wenn ich es für meine gesamte Grails-Anwendung mache? Oder ist die beste Lösung, um einfach eine eigene Methode zu erstellen (wie asTypeSafe
) und nennen Sie es? Haben Groovy/Grails einige Konfigurationsoptimierungen bezüglich der Groovy Type Conversion?
EDIT (für Leute mit Interesse an der Umsetzung Antwort) auf der akzeptierte Antwort Basierend habe ich den folgenden Code in meiner bootstrap.groovy Datei hinzugefügt und es funktioniert perfekt.
String.metaClass.asTypeSafe = {Class c ->
try {
delegate.asType(c)
}
catch (Exception) {
return null
}
}
und ich nenne es wie folgt:
def myNum = myStr.asTypeSafe(Integer)
Thx! Genau das habe ich gebraucht. Ich könnte tatsächlich eine neue Methode zur String-Klasse hinzufügen (wie "asTypeSafe"), anstatt asType nach Ihrem Vorschlag zu überschreiben. Wo schreiben Sie und nennen Sie diese Art von Code in einer Grails-Anwendung? In Bootstap? – fabien7474
Ja, Bootstrap wäre der richtige Ort. – ataylor