Brejk
Brejk

Reputation: 454

How to catch exceptions in entity?

I have a method in my entity with @ORM\PostRemove() which removes an associated file.

I wonder if I should do something like this:

try {
    unlink($file);
} catch (\Exception $e) {
    // Nothing here?        
}

Does it make sense to catch an exception and do nothing in catch block? Or maybe I shouldn't catch exception here, but then, where should I do it? Should it be an exception from LifecycleCallback method? I've read here that I shouldn't use logger in entity, so I'm confused what to put there instead.

Upvotes: 0

Views: 85

Answers (1)

Scriptable
Scriptable

Reputation: 19750

Your entity shouldn't really contain business logic for your application, its purpose is to map objects to the database records.

The way to approach this depends on the application, for example if you have a File Controller and a removeAction within then the best place to remove the file would likely be here.

As an example: (psuedo code)

public function removeAction($id) {
    $em = $this->getDoctrine()->getEntityManager();
    $file = $em->getRepository('FileBundle:File')->find($id);

    if (!$file) {
        throw $this->createNotFoundException('No file found for id '.$id);
    }

    $filePath = $file->getPath();
    if (file_exists($filePath) {
        try {
            unlink($filePath);
        }
        catch(Exception $e) {
          // log it / email developers etc
        }
   }

    $em->remove($file);
    $em->flush();
}

You should always add error checking and reporting in your application, check that a file exists before you attempt to remove it.

Upvotes: 1

Related Questions