I have the following `PL/SQL` code:

```
BEGIN
  FOR c IN (SELECT ...) LOOP
     <code1>;
  END LOOP;
  <code2>;
EXCEPTION WHEN NO_DATA_FOUND THEN
  NULL;
END;

```

This code should run **code1** multiple times within a loop and upon finishing this loop **code2** should be executed. Otherwise if SELECT query does not find data then I expect this should raise an exception and overstep **code2**, but this is not happening. Why?