代码之家  ›  专栏  ›  技术社区  ›  Liudi Wijaya

如何知道内置异常或用户定义的异常

c#
  •  -1
  • Liudi Wijaya  · 技术社区  · 6 年前

    我有这样的控制台程序:

    int a;
    try
    {
        Console.Write("Input = "); a = Convert.ToInt32(Console.ReadLine());
        if (a<0)
        {
            throw new Exception("Input Can't < 0");
        }
    }            
    catch (Exception ex)
    {
        Console.WriteLine("Something error");
    }
    Console.ReadKey();
    

    如果我输入字母表,它会显示“有什么错误”。如果我输入数字-20,它也会显示“Something error”。

    我知道如果我将块捕获中的代码更改为 Console.WriteLine(ex.Message); ,它可以显示我的用户定义异常。但是,我不想用它。

    是否有技巧检查异常是内置的还是用户定义的?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ryan S    6 年前

    您应该定义一个自定义异常类,并使用专用的catch块检查该类。

    通过从 Exception 类别:

    public class MyException : Exception
    {
        public MyException() { }
    
        public MyException(string message)
            : base(message)
        { }
    }
    

    然后在代码中抛出该异常类型:

    void MyMethod()
    {
        int a;
        try
        {
            Console.Write("Input = ");
            a = Convert.ToInt32(Console.ReadLine());
            if (a < 0)
            {
                throw new MyException("Input Can't < 0");
            }
        }
        catch (MyException myEx)
        {
            Console.WriteLine("MyException was thrown");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Some other exception was thrown");
        }
        Console.ReadKey();
    }