Случается, что метод, уловивший исключение и сделавший все, что он может в своем контексте, затем
повторно передает
(rethrow) исключение выше. Это легко реализовать с помощью ключевого слова
throw:
using System;
class RethrowApp {
static public void MainQ
{
Rethrow rethrow = new RethrowO;
try {
rethrow.Foo(); }
catch(Exception e) {
Console.WriteLine(e.Message); } }
public void Foo() {
try {
Bar(); }
catch(Exception) {
// Обработка ошибки, throw; > }
public void Bar() {
throw new Exception("Передано от Rethrow.Bar"); }
}
В этом примере
Main
вызывает
Foo,
который вызывает
Bar. Bar
передает исключение, которое улавливает
Foo.
После этого
Foo
неким образом обрабатывает исключение и повторно передает его наверх методу
Main
с помощью ключевого слова
throw.