2013-08-23 4 views
-3

Пример:Могу ли я определить свои собственные типы исключений в C# .net? если да, то как ..?

Можно определить свой собственный тип исключения?

Рассмотрим я есть свой собственный метод в коде позади или BL или DA слоя:

public void my_first_method() 
{ 
    // some custom code execution.. 
    //might throw some errors.. 
} 
//so.. if am not wrong.. 
//can i have something in my event handler like.. 

try 
{ 

    my_first_method(); 
    my_second_method(); 
    my_third_method(); 

} 
catch(my_first_methodException fex) 
{ 

} 
catch(my_second_methodException sex) 
{ 

} 
catch(my_third_methodException tex) 
{ 

} 
catch(Exception ex) 
{ 
    //if doesn't belongs to above 3 exception come here.. 
} 

Я пытаюсь выяснить, является ли это возможно. Пожалуйста, порекомендуйте. Заранее спасибо.

+0

Я бы, вероятно, переименовал переменную, используемую для улавливания и обработки типа 'my_second_methodException'. Помимо этого, нет ничего плохого в определении ваших собственных исключений, исходя из класса «Исключение». –

+0

Что вы пробовали? Найти msdn.microsoft.com для настраиваемого исключения .net http://msdn.microsoft.com/en-us/library/vstudio/ms229064(v=vs.100).aspx – Paparazzi

ответ

2

Да; просто создайте класс, наследующий Exception, и добавьте соответствующие конструкторы.

Для получения дополнительной информации см. MSDN.

Например:

[Serializable] 
public class NewException : Exception 
{ 
    public NewException() : base("Default message for this type") { } 
    public NewException(string message) : base(message) { } 
    public NewException(string message, Exception inner) : base(message, inner) { } 

    // This constructor is needed for serialization. 
    protected NewException(SerializationInfo info, StreamingContext context) 
    : base(info, context) { } 
} 
+0

спасибо, но как вы это называете в своем блок catch, это как «throw new NewException (ex.Message ,?), что вы передаете как значение ко второму аргументу? –

+0

@PrathapSVGenny: вы должны только pSSs исключать внутреннее, если оно есть. (Если вы используете, повторное добавление дополнительной информации в другой блок 'catch') – SLaks

+0

@PrathapSVGenny: см. http://stackoverflow.com/a/2999314/34397 – SLaks

0

Стоит также отметить, что вы можете создать исключение с Visual Studio сниппета. Просто введите «исключение» и вкладку, а затем назовите ее и добавьте любые пользовательские свойства и т. Д.

Смежные вопросы