throw new ArgumentException(); // what should I throw here?
Этот пример не очень понятен, исключение ArgumentException будет редко иметь исключение.Но когда вы действительно хотите:
new ArgumentException("parameter-name", previouseException);
или, может быть,
new Exception("I'm just a wrapper", new ArgumentException("parameter-name"));
Во время обработки, что если нет InnerException или InnerException снова имеет InnerException?
Что вы, вероятно, хотите:
catch (Exception ex)
{
while(ex.InnerException != null) ex = ex.InnerException;
errorService.Save(ex);
// throw; here unless you're very sure about handling everything
}