C # Определенное пользователем исключение, приведенное между исключениями? - PullRequest
0 голосов
/ 19 января 2011

1) Я создал тестовое исключение.

public class TestException : Exception
{
    string info;
    public string Info { get { return info; } set { info = value; } }
    public TestException() { }
    public TestException(string message) : base(message) { }
    public TestException(string message, Exception inner) : base(message, inner) { }
    protected TestException(
      System.Runtime.Serialization.SerializationInfo info,
      System.Runtime.Serialization.StreamingContext context)
        : base(info, context) { }
}

2) В функции где-то на сайте я получил что-то вроде этого:

catch (Exception e)
{
    TestException myOwnException = new TestException(e);
    myOwnException.Info = "test";
    LogError(myOwnException);
}

Однако я не могуприведение из базового исключения в мой класс.LogError ожидает TestException.

Я пытался создать это в своем классе Exception (позволило бы мне написать TestException myOwnException = e;)

public static implicit operator TestException(Exception e)
{
    return new TestException(e);
}

Но я просто продолжаю получать: пользовательскийпреобразования в базовый класс или из него запрещены.

Как я могу привести исключение из оператора catch в мой класс TestException?(Я также пробовал TestException test = (TestException) e; но это просто возвращает ошибку.

Ответы [ 2 ]

3 голосов
/ 19 января 2011

Я буду кратким, вы просто не можете сделать эту работу.Вам нужно изменить метод LogError (), чтобы он принимал объект Exception.Если требуется какое-либо дополнительное состояние (например, Info), добавьте его в качестве аргумента в метод LogError ().Или сделать перегрузку.

0 голосов
/ 19 января 2011

Однако я не могу привести базовое исключение к своему классу.LogError ожидает TestException.

Код в вашем посте не включает приведение из Exception к TestException.Есть ли приведение в LogError?Если вы не уверены, не могли бы вы опубликовать содержимое LogError?Точные детали проблемы, которую вы видите, не пытаясь добавить неявный оператор приведения, также будут полезны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...