我的程序当除数输入为0的时候输出的结果为“无穷大”,并不能执行我catch (DivideByZeroException)语句下面的异常,请问是为什么呢?应当怎么修改呢?谢谢了!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace Exc
{
    class Program
    {
        static void Main(string[] args)
        {
            float result = 0;            
            try
            {
                float dividend = float.Parse(Console.ReadLine());
                float divider=float.Parse(Console.ReadLine());
                result=dividend/divider;
            }
            catch (DivideByZeroException)
            {
                Console.WriteLine("除数不能为零");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            Console.WriteLine(result.ToString());        }
    }
}

解决方案 »

  1.   

    这些明知道具体异常点的代码,为何要 try呢,直接 if(divider==0)不就得了
      

  2.   

    浮点运算符不会引发异常,异常情况下浮点运算的结果为零,无穷或NaN。
    自己判断除数吧。
      

  3.   

    另外要确保打开了除零异常,在‘调试-异常’里,system下。
      

  4.   

            static void Main(string[] args) 
            { 
                float result = 0;            
                try 
                { 
                    int dividend = int.Parse(Console.ReadLine()); 
                    int divider=int.Parse(Console.ReadLine()); 
                    result=dividend/divider; ---------------------------------
    MSDN:
    DivideByZeroException 
    试图用零除整数值或十进制数值时引发的异常。//注意是十进制整数
      

  5.   

    除以0   无限大
    int i = 5f;
    int j = 0/ (i-5);
    Console.WriteLine(j);catch(DivideByZeroException e) 

    System.Console.WriteLine("零不能作为除数!异常值为:\n{0}",e); 

    catch(Exception e) 

    System.Console.WriteLine("并非\''零作为除数引发的异常\"!异常值为:\n{0}",e); 
      

  6.   

    folat 不能抛出异常,因为它吧不能异常给搞成0或无穷大,但你把它搞成int就可以捕捉到,单希望楼主不要什么都靠try,因为它是微软提供的不可预测的异常处理放法,官方明确说明对于那些可以预测到异常要代码判断,try太浪费性能