We have repository code that looks something like this:

```
public class PieRepository
{

    public void AddCherryPie(string incredientA)
    {
        try{
            ...
        }
        catch(Exception ex){
            log("Error in AddCherryPie(" + incredientA + ")");
            throw new Exception("Error in AddCherryPie(" + incredientA + ")", ex);
        }
    }

    public void AddApplePie(string incredientA, string incredientB)
    {
        try{
            ...
        }
        catch(Exception ex){
            log("Error in AddApplePie(" + incredientA + "," + incerdientB + ")");
            throw new Exception("Error in AddApplePie(" + incredientA + "," + incredientB ")", ex);
        }
    }
}

```

So this `try -> catch -> log -> throw new` is present in most of repository methods and other important methods in the project.

We had an argument about this today, as I have never seen someone suggest such type of error handling, but the main argument is that we and support need to know exactly what happened, and any other type of exception handling wouldn't give us exactly this...
Could someone tell if this is ok?

**Edit:** Added original exception message when throwing error.