需要写一个C#数阶乘的函数,函数已经写好,但老师要求用抛出异常的方式来判断这个数的阶乘结果是否溢出,如果溢出就抛出异常。
阶乘函数如下:
/*
 * 采用递归方法求一个数的阶乘
 * 2012.10.06---wenyan
 */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace jiecheng1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Please input num N:");//提示输入一个整数
            int n=0;
            n= int.Parse(Console.ReadLine());//读取这个整数并强制转换
            Console.WriteLine(fun(n).ToString());//调用阶乘函数
            Console.ReadKey();
        }
        public static double fun(int n)
        {
            if (n == 1)
                return 1;
            else
                return fun(n-1)*n;//递归
        }
    }
}怎么判断溢出并抛出异常呢?望大神们指教!

解决方案 »

  1.   

    本帖最后由 caozhy 于 2012-10-06 19:58:11 编辑
      

  2.   

    有没有Try catch 的方法? 怎么用这种该方法呢?
      

  3.   

    try catch是捕获异常
    这里是抛出异常,不用自己写throw,只要你写了checked,那么clr会自动帮你抛的。如果你需要捕获的话,自己在外面再套try catch好了。
      

  4.   

    看下面3段代码:int x = 2000000000; //20亿,一个略小于2^31的数字。
    x += x; // 不会丢出异常
    checked {
        int x = 2000000000;
        x += x; // 导致异常
    }
    try
    {
        checked {
            int x = 2000000000;
            x += x; // 导致异常
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message); // 异常被捕获
    }