2014-11-17 4 views
0

Я хочу, чтобы исключить пользовательское исключение из блока catch, то есть всякий раз, когда возникает какое-либо исключение, он должен поймать блок catch и будет генерировать настраиваемое исключение. Я пытаюсь использовать приведенный ниже код, но исключение для выполнения в блоке catch как «необработанное исключение».Можем ли мы вытащить пользовательское исключение из блока catch?

try{ 
    ///some error 
} 
     catch(Exception e){ 
    try{ 
      throw new CustomException("Exception1", e); 
     } 
    catch(CustomException ce) 
     { 
     Console.WriteLine("Custom Exception Caught" + ce.StackTrace); 

     } 
} 


public class CustomException : Exception 
{ 

    public CustomException : base() 
    { 
    } 

    public CustomException(string message, Exception innerException) : base(message, innerException) 
    { 
    processError(message, innerException); 
    } 
} 

public static void processError(string mgs, Exception e) 
    { 
    switch(mgs) 
    { 
    case "Exception1": 
     Console.WriteLine("Exception1 caught" + e.StackTrace); 
     break; 
    case "Exception2": 
     Console.WriteLine("Exception2 caught" + e.StackTrace); 
     break; 
    default: 
     Console.WriteLine("Some other Exception caught" + e.StackTrace); 
     break; 
     } 
    } 

Любые намеки на вышеупомянутую проблему очень ценятся. Заранее спасибо.

+0

«но получение ошибки» слишком расплывчато для нас, чтобы помочь вам. Когда вы получаете ошибку - во время компиляции или времени выполнения? Если это во время выполнения, это, по-видимому, потому, что ничего не ловит «CustomException», которое вы бросаете ... –

+0

@ Jin Skeet, отредактированный в соответствии с вашими сомнениями. – Anand

+0

Ваше редактирование показывает, что вы ловили «CustomException», если это было выбрано в блоке 'try', но вы выбрасываете его из блока' catch' ниже ..., что новое исключение не будет захвачено блоком catch над ним. Непонятно, что вы хотите здесь сделать - вы хотите, чтобы он выбрал «CustomException» или нет? –

ответ

1

Да, просто написать

throws new ExceptionType(parameter); 

где ExceptionType это имя класса пользовательских исключений.

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

  • Нет связанных вопросов^_^