Skip to content

Serializer should throw NotNormalizableValueException instead of InvalidArgumentException when an invalid enum is deserialized #49711

Closed
@ludekbenedik

Description

@ludekbenedik

Description

Hi,
when deserialize data to an entity with an enum attribute and data contains an invalid enum 's value, the serializer throws InvalidArgumentException which is a logic exception.

  1. This is not a program logic error so InvalidArgumentException is not correct.
  2. InvalidArgumentException is very a common exception so catching it is very difficult. A programmer must test the exception's message if an other logic exception have to be threw and logged.

For example, when deserialize a wrong date format then NotNormalizableValueException is thrown. For a programmer these situations are equal.

Example

enum MyEnum: int
{
    case A = 0;
    case B = 1;
}

class MyEntity
{
    public MyEnum $myEnum;
}

$entity = $serializer->deserialize('{"myEnum":2}', MyEntity::class, 'json')

Before:

Throws InvalidArgumentException

After:

Throws NotNormalizableValueException

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions