Разница между перебрасыванием параметра без улова и бездействием? - PullRequest
14 голосов
/ 04 апреля 2009

Предположим, у меня есть два следующих класса в двух разных сборках:

//in assembly A
public class TypeA {
   // Constructor omitted
   public void MethodA
   {
     try {
       //do something
     }
     catch {
        throw;
     }
   }
}
//in assembly B
public class TypeB {
   public void MethodB
   {
     try {
       TypeA a = new TypeA();
       a.MethodA();
     }
     catch (Exception e)
       //Handle exception
     }
   }
}

В этом случае try-catch в MethodA просто повышает исключение, но на самом деле не обрабатывает его. Есть ли какое-либо преимущество в использовании try-catch вообще в MethodA? Другими словами, есть ли разница между этим типом блока try-catch и его отсутствием?

Ответы [ 11 ]

0 голосов
/ 05 февраля 2016

Вы можете использовать блок try {} catch (ex) {} в методе A, только если вы можете перехватить конкретное исключение, которое может быть обработано в MethodA () (например, для ведения журнала).

Другой вариант - связать исключение с помощью свойства InnerException и передать его вызывающей стороне. Эта идея не уничтожит трассировку стека.

...