public void GeneratePayslip(ITaxCalculator calculator, PaySlip payslip, uint annualIncome, double superRate) { try { payslip.GrossIncome = calculator.GrossIncome(annualIncome); payslip.IncomeTax = calculator.IncomeTax(annualIncome); payslip.NetIncome = payslip.GrossIncome - payslip.IncomeTax; payslip.Super = calculator.Super(annualIncome, superRate); payslip.Generated = true; } catch (NegativeNumberException) { throw; } catch (Exception ex) { throw new PayslipGenerationException(ex.Message, ex); } }