繁体   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