Is there any way to force that the caller could override the `catch` ?

i.e.

```
void ParentMethod()
{
  try 
  {   
      child_method(); 
  }
  catch(Exception e)
  {
      MessageBox.Show("parent");
  }
}

void child_method()
{
  try 
  {   
      smth(); 
  }
  catch(Exception e)
  {
      MessageBox.Show("child");
  }
}

```

so, when `smth` throws exception, instead of "child", i could override that `catch` with parent, and show i.e. `parent`. 

**Note 1:** I am in a case, where I don't control `child`. However, for the sake of the answer completion, you can still answer for the case when `child` is controlled.

**Note 2:** I nowhere mentioned that I have classes or inheritance. Please avoid answers for virtual/override things. I know that.