异常未处理 - 不知道如何解决

时间:2018-04-06 00:04:48

标签: c#

我在“抛出新的异常”(“贷记金额必须大于0”)时得到异常未处理;“ 请帮帮我,我不知道该怎么办。

命名空间_11_8 {     班级帐户     {         private decimal _balance;

    public Account(decimal balance)
    {

    }

    public decimal Balance
    {
        get { return _balance; }
        set
        {
            if (value >= 0)
                _balance = value;
            else
                throw new Exception("Balance cant be negative");
        }
    }

    public virtual void Credit(decimal amount)
    {
        if (amount > 0)
            Balance += amount;
        else
            throw new Exception("Creditd amount must be greater than 0");
    }

    public virtual bool Debit(decimal amount)
    {
        bool OK = true;
        if (Balance - amount >= 0)
        {
            Balance -= amount;
            OK = true;
        }
        else
        {
            Console.Write("Debit amount exceeded account balance");
            OK = false;
        }

        return OK;
    }
}
namespace _11_8
{
    class Program
    {
        static void Main(string[] args)
        {

            decimal totalCredit = 0.0M;
            SavingsAccount sa = new SavingsAccount(1000.25M, 0.1M);

            Console.WriteLine("Start balance is {0:C}", sa.Balance);
            totalCredit = sa.CalculateInterest();
            Console.WriteLine("Total interest: {0:C}", totalCredit);
            sa.Credit(totalCredit); //adding credit to balance
            Console.WriteLine("End balance is: {0:C}", sa.Balance);
            Console.WriteLine();


            CheckingAccount ca = new CheckingAccount(1000.25M, 5.50M);
            Console.WriteLine("Start balance is {0:C}", ca.Balance);
            ca.Credit(55.25M);
            ca.Debit(925.55M);
            Console.WriteLine("Ending balance is {0:C}", ca.Balance);

            Console.ReadLine();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

当您调用export default { created: function () { this.$root.$emit('page_title', 'Page Title') } } 时,由于您编写类的方式,它会抛出异常,但您没有sa.Credit(totalCredit)它,或者处理该异常。

由于您决定抛出异常,程序将自动停止响应(如果调试,它将允许您查看堆栈跟踪)。要“处理”此异常,请使用catch代码块。

try catch

我更关心您决定抛出try { Credit(0.0M); // this will throw an `Exception`, due to the value we passed } catch { Console.WriteLine("Hey! The value in credit cannot be 0."); } ,而不是通知用户。虽然目前你的代码似乎没有用户输入,但是为这样的事情抛出Exception并不是一个好主意。更好的选择是生成一条文本消息,指出该值太低而无法计算,因此要求重新键入新值。

答案 1 :(得分:-1)

当您致电Credit(十进制金额)时。在我们的例子中,amount必须大于0.看起来CalculateInterest是0.