簡體   English   中英

我應該把 try catch 塊放在哪里? (簡單的划分方法)

[英]Where i should place try catch block? (Simple division method)

這是我的代碼:

 using System;

 using System.Data;

 using System.Transactions;

 namespace BasicCourse.Exceptions 
 {

    class Program
    {
   
       static void Main(string[] args)
       {
       
       Division();

       Console.ReadKey();
       }

      static void Division()
      {
        Console.Write("Enter a first number: ");
        int firstEnteredNumber = int.Parse(Console.ReadLine());

        Console.Write("Enter a second number: ");
        int secondEnteredNumber = int.Parse(Console.ReadLine());

        float quotient = (float) firstEnteredNumber / secondEnteredNumber;

        Console.WriteLine("Result of division: " + quotient + "\n");
      }
}

}

我正在學習 C# 中的異常。我想參加除以零異常,但我不知道應該在哪里放置 try catch 塊。在 Main 方法中:

try 
{ 
    Division() 
} 
catch (DivideByZeroException ex)
 etc...? 

還是里面的Division

        static void Main(string[] args)
    {
        try
        {
            Division();
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
            throw;
        }


        Console.ReadKey();
    }

除以零不會導致異常。 您將不得不放入一些邏輯來處理它。

            if (float.IsNaN(quotient))
        {
            //dostuff
        }

更新---對不起!
我閱讀了其他人的答案,發現 float 不會拋出任何異常!我很抱歉忘記了它。

DivideByZeroException 類
嘗試將整數十進制值除以零時引發的異常。

控制台顯示:

除法結果:∞

事實上,我們不想要這種類型的結果,所以我編輯了答案。


所以我們知道結果是:沒有拋出異常。
如果您希望方法 Division() 提醒用戶他們正在嘗試除以 0,您可以檢查該值。

      static void Division()
      {
        Console.Write("Enter a first number: ");
        int firstEnteredNumber = int.Parse(Console.ReadLine());

        Console.Write("Enter a second number: ");
        int secondEnteredNumber = int.Parse(Console.ReadLine());

        //Added
        if (secondEnteredNumber == 0)
        {
            Console.WriteLine("cannot divide by 0");
        }
        else
        {
            float quotient = (float) firstEnteredNumber / secondEnteredNumber;
            Console.WriteLine("Result of division: " + quotient + "\n");
        }
      }

暫無
暫無

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

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