Как отобразить мое собственное исключение? - PullRequest
0 голосов
/ 14 июля 2011

Я занимаюсь разработкой веб-проекта, в котором мне нужно добавить пользовательские классы исключений.Например, как я могу отобразить сообщение из моего пользовательского класса исключений, когда истечет время ожидания сеанса?Пожалуйста помоги.Любой пример будет полезен.

Это то, что я написал в своем классе исключений:

public class CustomException : Exception
{
    private string message;

    public CustomException ()
    {
        this.message = "Invalid Query";
    }
    public CustomException (String message)
    {
        this.message = message;

    }

}

Нужно знать, как связать это с тайм-аутом сеанса, откуда мне нужнонаписать логику того же самого.Спасибо.

Ответы [ 4 ]

1 голос
/ 14 июля 2011

Если вы хотите бросить свой кастом exception, когда он поднят, вы можете сделать это следующим образом.

try {
    DataTable dt = q.ExecuteQuery(); //This throws a timeout.
} catch(SessiontTimeoutException ste) {
    throw new CustomException("Session has timed out");
} catch(Exception e) {
    //Show unexpected exception has occured
}

Не слишком уверен, что вы пытаетесь это сделать.Обновить:Чтобы узнать, является ли SqlException TimeoutException, пожалуйста, посмотрите это StackOverFlow Post.

0 голосов
/ 14 июля 2011

Я рекомендую использовать Inner Exception для получения удобного сообщения об исключении, а также системного сообщения об ошибке. Если вы получите MyException, вы увидите ваше сообщение об исключении и системное сообщение об исключении на MyException.ToString().

Кроме того, если вас интересует кодирование Exception, вы можете использовать функцию фрагмента кода VS. Просто введите «Exception» и дважды нажмите клавишу TAB, тогда VS создаст класс Exception как следующий код.

try
{
    DataTable dt = q.ExecuteQuery(); //This throws a timeout.
}
catch (SessiontTimeoutException ex)
{
    throw new MyException("my friendly exception message", ex);
}

[Serializable]
public class MyException : Exception
{
    public MyException() { }
    public MyException(string message) : base(message) { }
    public MyException(string message, Exception inner) : base(message, inner) { }
    protected MyException(
      System.Runtime.Serialization.SerializationInfo info,
      System.Runtime.Serialization.StreamingContext context)
        : base(info, context) { }
}
0 голосов
/ 14 июля 2011

Класс SqlException предоставляет свойство Ошибки , которое является коллекцией объектов SqlError. Вы можете запросить свойство Number каждого объекта ошибки, которое соответствует записи в таблице master.dbo.sysmessages.

0 голосов
/ 14 июля 2011

Возможно, вы захотите записать это как

public CustomException() : base("Invalid Query") { }

, чтобы сообщение об исключении передавалось правильно, для другого конструктора

public CustomException(String message) : base(message) { }

тогда вам не нужна личная строкаполе сообщения.

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