Categories
.NET Quiz

Quiz sobre C# – Excepciones

Para los amantes de C# :-D, cuál es la diferencia entre las excepciones producidas por Foo1 y Foo2?

csharp:

using System;
class Program
{
    static void Main(string[] args)
    {
        try {
            Foo1();
        }
        catch (Exception ex) {
            Console.WriteLine(ex.ToString());
        }
        Console.WriteLine("------------------");
        try {
            Foo2();
        }
        catch (Exception ex) {
            Console.WriteLine(ex.ToString());
        }
    }
    private static void Foo1()
    {
        try {
            Bar();
        }
        catch (Exception ex) {
            throw ex;
        }
    }
    private static void Foo2()
    {
        try {
            Bar();
        }
        catch (Exception ex) {
            throw;
        }
    }
    private static void Bar()
    {
        throw new Exception("Error!");
    }
}
Categories
Quiz

Quiz sobre Java

Para todos los fans de Java ¿Qué es lo que pasa con las siguientes porciones código? ¿por qué?

java:

public class A
{
        public static void main(String args[])
        {
                int y;
                try
                {
                        y = 0 / 0;
                }
                catch (Exception ex)
                {
                        y = 0 / 0;
                }
                finally
                {
                        System.out.println("Finally");
                }       
        }
}
java:

public class A
{
        public static void main(String args[])
        {
                double y;
                try
                {
                        y = 0 / 0;
                }
                catch (Exception ex)
                {
                        y = 0 / (float) 0;

                }
                finally
                {
                        System.out.println("Finally");
                }       
        }
}

Posibles respuestas

  • Lanza una excepción del tipo ArithmeticException.
  • Lanza una excepción del tipo ArithmeticException y escribe "Finally"
  • Escribe "Finally" y lanza una excepción del tipo ArithmeticException.
  • Sólo escribe "Finally"
Categories
.NET Quiz

Quiz sobre C#

Para los entendidos en C#, ¿Qué devuelve la siguiente función (y por qué) ?

csharp:

using System;

class Q1: System.NullReferenceException {
  static int Main() {
    try {
      string valor = "Value: " + (Q1)null;
      return valor.Length;
    }
    catch (Q1 q) {
      throw;
    }
  }
  public static string operator +(string msg, Q1 q) {
    return msg + q;
  }
}

Posibles respuestas

  • Retorna la longitud de la variable valor
  • Se produce un NullReferenceException
  • Se produce un StackOverflowException

Es una ligera adaptación del Quiz Sharp 1 de Adrian Florea

Solución

El código mostrado genera un StackOverflowException, porque la sobrecarga del operador "+" se hace sobre un objeto de tipo string en el primer sumando y un objeto de tipoQ1 en el segundo, es por eso que se hace recursivo (return msg+Q1;) como menciona Kiz.