internal override void WriteTo(CCodeWriterBase c) { if (this.FinallyBlockOpt != null) { var block = this.FinallyBlockOpt as Block; if (block != null) { block.SuppressNewLineAtEnd = true; } c.OpenBlock(); c.TextSpan("Finally"); c.WhiteSpace(); c.TextSpan("__finally_block"); c.TextSpan("("); new LambdaExpression() { Statements = block }.WriteTo(c); c.TextSpan(");"); c.NewLine(); } if (this.catchBlocks.Any()) { c.TextSpan("try"); } c.NewLine(); c.WriteBlockOrStatementsAsBlock(this.TryBlock); foreach (var catchBlock in this.catchBlocks) { catchBlock.WriteTo(c); } if (this.FinallyBlockOpt != null) { c.EndBlock(); } c.Separate(); }
internal override void WriteTo(CCodeWriterBase c) { c.TextSpan("catch"); c.WhiteSpace(); c.TextSpan("("); if (this.ExceptionTypeOpt != null) { c.WriteType(this.ExceptionTypeOpt); if (this.ExceptionSourceOpt != null) { c.WhiteSpace(); this.ExceptionSourceOpt.WriteTo(c); } } else { c.TextSpan("..."); } c.TextSpan(")"); c.NewLine(); c.WriteBlockOrStatementsAsBlock(Statements); }