Thread overview
restriction in finally no catch
Oct 09, 2006
Frank Benoit
Oct 09, 2006
BCS
October 09, 2006
Actually DMD has the restriction, that a catch in not allowed within a finally block.

A very simple workaround:

try{
}
catch( Exception e){
}
finally(
  void block(){
    try{
    }
    catch( Exception e){
    }
  }
  block();
}

This is OK for the compiler.
I don't know the reason for this restriction, but
isn't it possible to get rid of it?
October 09, 2006
Frank Benoit wrote:
> Actually DMD has the restriction, that a catch in not allowed within a
> finally block.
> 
> A very simple workaround:
> 
[...]

another option:

 try
 {
 }
 catch( Exception e)
 {
 }
 finally
 {
	// delegate literal
   (){
     try
     {
     }
     catch( Exception e)
     {
     }
   }();	// called directly
 }
October 22, 2006
So if there is a simple workaround like this, why not remove the restriction?