从抛出但未捕获的system.exception派生的异常

时间:2011-01-11 19:51:36

标签: c#

我以下列方式使用以下system.exception派生异常,并期望在SomeOtherFunction中的catch块中捕获SomeFunction中抛出的异常,但是当代码尝试抛出异常时我收到未处理的异常错误,任何见解都会受到赞赏。

void SomeFunction()
{
   if (someValue == false)
   {
      throw(new MyException("some error, falseValue,null);
   }
}

void SomeOtherFunction()
{
    try
    {
       SomeFunction();
    }
    catch(MyException ex)
    {
    }
}

public class MyException : Exception
{
    public MyException (string message, Reason reason, Exception innerException)
        : base(message, innerException)
    {
        Reason = reason;
    }

    public Reason Reason { get; private set; }
}

2 个答案:

答案 0 :(得分:2)

必须有其他代码导致此问题 - 这是一个有效的完整示例:

using System;

class Example
{
    static void Main()
    {
        SomeOtherFunction();
    }

    static void SomeFunction()
    {
        throw new MyException("some error");

    }

    static void SomeOtherFunction()
    {
        try
        {
            SomeFunction();
        }
        catch (MyException)
        {
            Console.WriteLine("caught the exception");
        }
    }
}

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

也许您可以使用此示例并向后工作以查看您的实际代码中是否缺少某些内容?由于您的示例存在编译问题,我假设您已经清理了一些生产代码。

答案 1 :(得分:0)

我看到一些小的语法错误。但我认为你的未处理的异常错误可能来自MyException的构造函数或你在构造函数/ get,set方法中处理Reason的方式。看起来你正试图为一个类设置一个值,但我仍然试图从c ++迁移..所以我正在谈论的idrk。 尝试修复语法并使用“原因”