Implement funcionality with handling errrors without throwing exceptions
I can not go with throwing exceptions because it will exit the app.


That's but a grave delusion and misconception about exception. What you have to learn yet, there is an infinite number of different exceptions, and catch (\Exception $e) is not the only way to catch an exception. 

So you have a solution in three easy steps

First, define your own kind of exception:

class MyFormHandlerErrorException extends Exception {}


then make your methods throw this certain exception

if (something goes wrong) {
    throw new \MyFormHandlerErrorException('Error message goes here');
}


and then simply catch this only one

public function create() {
    try{
        $resource = $this-&gt;bcRepo-&gt;get($bcId);
        $dto = EntityDto::fromBc($resource);
        $entity = Entity::fromDto($dto);
        $this-&gt;entityRepo-&gt;create($entity);
    } catch (\MyFormHandlerErrorException  $e) {
        $this-&gt;reporter-&gt;add($e);
        return false;
    }
}


bingo! now your specific exceptions will be caught whereas all other error will bubble up to error handler. As simple as that

If you want to define several different exceptions of the same kind, then just create one basic exception and then extend all others from this:

class MyFormHandlerErrorExceptionA extends MyFormHandlerErrorException {}
class MyFormHandlerErrorExceptionB extends MyFormHandlerErrorException {}    
class MyFormHandlerErrorExceptionN extends MyFormHandlerErrorException {}


now you could either catch any of them specifically, or catch them all at once by catching the base exception