【问题标题】:Where i should place try catch block? (Simple division method)我应该在哪里放置 try catch 块? (简单除法)
【发布时间】:2021-01-27 19:29:54
【问题描述】:

这是我的代码:

 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 方法内?

【问题讨论】:

  • 在这种情况下,我不会使用 try/catch,而是在进行除法之前检查 secondEnteredNumber 是否为零。
  • 在main里面,原因是应该由调用者负责处理异常,在这种情况下调用者是Main
  • 当用户输入 0 作为第二个数字时,您希望发生什么?

标签: c# .net exception methods


【解决方案1】:

更新 --- 对不起!
我看了别人的回答,发现float不会抛出任何异常!很抱歉我忘记了。

DivideByZeroException Class
尝试将 整数小数 值除以零时引发的异常。

控制台显示:

除法结果:∞

事实上,我们不想要这种类型的结果,所以我编辑了答案。


所以我们知道结果是:没有抛出异常。
如果您希望方法 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");
        }
      }

【讨论】:

    【解决方案2】:
            static void Main(string[] args)
        {
            try
            {
                Division();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
    
    
            Console.ReadKey();
        }
    

    除以零不会导致异常。您必须输入一些逻辑来处理它。

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

    【讨论】:

      猜你喜欢
      • 2015-02-08
      • 2022-01-13
      • 1970-01-01
      • 2016-07-02
      • 1970-01-01
      • 2010-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多