簡體   English   中英

C#中的基本錯誤捕獲

[英]basic error catching in C#

我需要有一個基本的錯誤捕獲功能,如果用戶鍵入負利率,該錯誤生成一個錯誤語句。 目前,我有這個貸款計算器,它會產生關於負利率的錯誤,但是它在if else語句中。 我也有一個try catch語句,但是如果用戶鍵入的不是數字,它只會產生一條錯誤消息。 對於我的負利率,如何使try catch語句產生錯誤的任何方向/提示都將很好。 謝謝

namespace Program_3_Car_Calc
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) // Calculate message box 
    {
        double LoanAmount = 0;
        double Payment = 0;
        double InterestRate = 0;
        double DownPayment = 0;
        int PaymentPeriods = 0;

        // Inputs
        try
        {
            InterestRate = Convert.ToDouble(txtRate.Text);
            PaymentPeriods = Convert.ToInt16(Convert.ToDouble(txtTime.Text) * 12);
            LoanAmount = Convert.ToDouble(txtLoan.Text);
            DownPayment = Convert.ToDouble(txtDown.Text);

            // Calculate the monthly payment 
            if (InterestRate > 0)
            {
                InterestRate = InterestRate / 100;
            }

            else
            {
                MessageBox.Show("Error, Please enter a positive number");
            }

            Payment = ((LoanAmount - DownPayment) * Math.Pow((InterestRate / 12) + 1,
           (PaymentPeriods)) * InterestRate / 12) / (Math.Pow(InterestRate / 12 + 1,
           (PaymentPeriods)) - 1);
           Payment = Math.Round(Payment, 2);

            // Ouptput the results of the monthly payment 
            lblMonthlyPayment.Text = "Your Monthly Payment will be: " + "$" + Payment.ToString   ("N2");

        }
        catch
        {
            MessageBox.Show("You have entered an invalid character");
        }


    }
    private void CloseGoodbye(string message, string title = " ", int amount = 0) //Optional Parameter for amount of time message box appears 
    {
        for (int i = 0; i < amount; i++)
        MessageBox.Show(message, title);
        Application.Exit();
    }

    private void cmdFinished_Click(object sender, EventArgs e) // Finished Message box 
    {
        CloseGoodbye("Goodbye", "Loan Calc", 1);
    }


}

我的建議是堅持使用if / else語句。

避免使用try / catch捕獲可預防的錯誤。 那不是最佳實踐。


如果您死定要拋出異常,則可以鍵入

throw new ArgumentException("You have entered an invalid character");

從技術上講,您可以引發任何類型的異常,但是ArguementException通常用於具有無效參數的情況。

請記住,如果您立即捕獲到此異常,則該異常的全部目的都將丟失

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM