diff --git a/spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java b/spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java index c457b51c8bf..a115f5fc7fd 100644 --- a/spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java @@ -572,7 +572,7 @@ public abstract class AbstractNestablePropertyAccessor extends AbstractPropertyA new PropertyChangeEvent(this.rootObject, this.nestedPath + propertyName, oldValue, newValue); throw new ConversionNotSupportedException(pce, requiredType, ex); } - catch (Throwable ex) { + catch (IllegalArgumentException ex) { PropertyChangeEvent pce = new PropertyChangeEvent(this.rootObject, this.nestedPath + propertyName, oldValue, newValue); throw new TypeMismatchException(pce, requiredType, ex); diff --git a/spring-beans/src/main/java/org/springframework/beans/TypeConverterSupport.java b/spring-beans/src/main/java/org/springframework/beans/TypeConverterSupport.java index ba9fc09cca0..9be206c6943 100644 --- a/spring-beans/src/main/java/org/springframework/beans/TypeConverterSupport.java +++ b/spring-beans/src/main/java/org/springframework/beans/TypeConverterSupport.java @@ -73,7 +73,7 @@ public abstract class TypeConverterSupport extends PropertyEditorRegistrySupport catch (IllegalStateException ex) { throw new ConversionNotSupportedException(value, requiredType, ex); } - catch (Throwable ex) { + catch (IllegalArgumentException ex) { throw new TypeMismatchException(value, requiredType, ex); } } diff --git a/spring-context/src/main/java/org/springframework/format/support/FormatterPropertyEditorAdapter.java b/spring-context/src/main/java/org/springframework/format/support/FormatterPropertyEditorAdapter.java index 7d490f5d32e..c3812473a11 100644 --- a/spring-context/src/main/java/org/springframework/format/support/FormatterPropertyEditorAdapter.java +++ b/spring-context/src/main/java/org/springframework/format/support/FormatterPropertyEditorAdapter.java @@ -18,7 +18,6 @@ package org.springframework.format.support; import java.beans.PropertyEditor; import java.beans.PropertyEditorSupport; -import java.text.ParseException; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.format.Formatter; @@ -65,7 +64,10 @@ public class FormatterPropertyEditorAdapter extends PropertyEditorSupport { try { setValue(this.formatter.parse(text, LocaleContextHolder.getLocale())); } - catch (ParseException ex) { + catch (IllegalArgumentException ex) { + throw ex; + } + catch (Throwable ex) { throw new IllegalArgumentException("Parse attempt failed for value [" + text + "]", ex); } } diff --git a/spring-context/src/main/java/org/springframework/format/support/FormattingConversionService.java b/spring-context/src/main/java/org/springframework/format/support/FormattingConversionService.java index a6e9219bf1d..15b47df909b 100644 --- a/spring-context/src/main/java/org/springframework/format/support/FormattingConversionService.java +++ b/spring-context/src/main/java/org/springframework/format/support/FormattingConversionService.java @@ -17,7 +17,6 @@ package org.springframework.format.support; import java.lang.annotation.Annotation; -import java.text.ParseException; import java.util.Collections; import java.util.Map; import java.util.Set; @@ -193,11 +192,14 @@ public class FormattingConversionService extends GenericConversionService try { result = this.parser.parse(text, LocaleContextHolder.getLocale()); } - catch (ParseException ex) { + catch (IllegalArgumentException ex) { + throw ex; + } + catch (Throwable ex) { throw new IllegalArgumentException("Parse attempt failed for value [" + text + "]", ex); } if (result == null) { - throw new IllegalStateException("Parsers are not allowed to return null"); + throw new IllegalStateException("Parsers are not allowed to return null: " + this.parser); } TypeDescriptor resultType = TypeDescriptor.valueOf(result.getClass()); if (!resultType.isAssignableTo(targetType)) {