java - jsr303 validation on a getMethod that throws an exception -
मेरे पास निम्न विधि है
सार्वजनिक वर्ग चालान {सार्वजनिक स्ट्रिंग मुद्रा = "USD" ; @ नॉन सार्वजनिक सार्वजनिक बिगडीकिल getTotal () {यदि ("USD" .equals (this.currency)) नए अवैध आर्गमेंट अपवाद फेंक (); दूसरा नया बिगडीकैम ("1.00") लौटा; }} कोड जब मैं चलाता है, तो वह ठीक है, एक अवैध अवैध आक्षेप () फेंकता है। हालांकि, जब मैं एक सत्यापन परीक्षण चलाता हूं, तो जांचकर्ता क्रैश करता है और मान्यकरण अपवाद फेंकता है मैं जारी रखने के लिए परीक्षण करना चाहूंगा और सत्यापन की परीक्षा में असफल होने के कारण अपवाद फेंकने वाली विधि की रिपोर्ट करूँगा। जैसा कि यह खड़ा है, कोई भी तरीका जो एक अपवाद फेंकता है, वह सत्यापन जांचकर्ता को क्रैश करता है।
सत्यापन जांचकर्ता
मान्यकर्ता सत्यापनकर्ता = मान्यकरण .buildDefaultValidatorFactory ()। GetValidator (); सेट करें & lt; ConstraintViolation & LT; चालान & gt; & gt; उल्लंघन = सत्यापनकर्ता। वैधता (यह); और फेंक देता है:
javax.validation.ValidationException: org.hibernate.validator.util.ReflectionHelper.getValue पर getTotal तक पहुंचने में असमर्थ (ReflectionHelper। java: 303) org.hibernate.validator.metadata.MetaConstraint.getValue (MetaConstraint.java143) पर org.hibernate.validator.engine.ValidatorImpl.validateConstraint पर (ValidatorImpl.java:325) org.hibernate.validator.engine पर .ValidatorImpl.validateConstraintsForRedefinedDefaultGroup (ValidatorImpl.java773) at org.hibernate.validator.engine.ValidatorImpl.validateConstraintsForCurrentGroup (validatorimpl.java256) at org.hibernate.validator.engine.ValidatorImpl.validateInContext पर (मान्यकर्ता इंपल.जेवाए 710) पर org.hibernate.validator.engine.ValidatorImpl.validate com.salesfront.core.client.model.proxies.Invoice.getValidationErrors (Invoice.java:198) पर (ValidatorImpl.java:119) com.salesfront.core.client पर। Model.proxies.AccountingValidation.ValidateAccount (accountingValidation.java37) पर sun.reflect.NativeMethodAccess orImpl.invoke0 sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke पर पर पर (मूल निवासी विधि) (विधि। java: 606) at org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall (frameworkMethod.java:44) पर org.junit.internal.runners.model.ReflectiveCallable.run (ReflectiveCallable.java.15) org.junit पर। Org.junit.runners.blockJUnit4ClassRunner.runChild पर org.junit.internal.runners.statements.InvokeMethod.evaluate (InvokeMethod.java:20) पर धावक.मॉडेल.फ्रेमवर्क मेथइनवॉइसएक्सप्लोजीव (फ्रेमवर्क मेथेशन.जावा 41) (BlockJUnit4ClassRunner.java: 76) org.junit.runners.BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.java:50) org.junit.runners.ParentRunner $ 3.run पर (ParentRunner.java:193) org.junit.runners.ParentRunner $ 1.schedule पर (ParentRunner पर जावा: 52) org.junit.runners.ParentRunner पर org.junit.runners.ParentRunner.runChildren (ParentRunner.java:191) पर .access org.eclipse पर org.junit.runners.ParentRunner $ 2.evaluate (ParentRunner.java:184) org.junit.runners.ParentRunner.run (ParentRunner.java:236) में कम से $ 000 (ParentRunner.java:42)। jdt.internal.junit4.runner.JUnit4TestReference.run org.eclipse.jdt.internal.junit.runner.TestExecution.run पर (JUnit4TestReference.java:50) (TestExecution.java:38) org.eclipse.jdt.internal पर। junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.java:467) org.eclipse.jdt.internal.junit.runner पर org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.java:683) पर। sun.reflect.NativeMethodAccessorImpl पर java.lang.reflect.InvocationTargetException: RemoteTestRunner.run org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main पर (RemoteTestRunner.java:390) (RemoteTestRunner.java:197) की वजह से। invoke0 (मूल निवासी विधि) sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) पर ja पर पर com पर java.lang.IllegalArgumentException: va.lang.reflect.Method.invoke org.hibernate.validator.util.ReflectionHelper.getValue पर (Method.java:606) (ReflectionHelper.java:297) ... 30 और की वजह से .salesfront.core.client.model.proxies.Invoice.getTotal (Invoice.java:148) ... 35 अधिक
यह संभव है कि सत्यापन जांचकर्ता दुर्घटनाओं का कारण यह है कि आपके कोड में दिए गए अपवाद कभी नहीं पकड़े जाते। यदि आप अपने कोड को एक प्रयास / फेंक / कैच ब्लॉक से घिरा हुआ है जिसमें विशेष रूप से अपवाद पकड़ा गया है और इसके साथ कुछ किया है जो आपकी समस्या को ठीक कर सकता है।
Comments
Post a Comment