Пример #1
0
        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();
        }
Пример #2
0
        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);
        }