Tengo un pequeño problema. A veces, cuando depuro una aplicación, quiero simular durante la sesión de depuración una excepción lanzada desde un método, pero no hay forma de hacerlo. Ni siquiera puedo arrastrar el cursor (el amarillo que indica la línea actual) a un bloque de excepción. La única forma de activar una excepción durante la ejecución es cambiar la línea de código actual y escribir la excepción que deseo lanzar. Este método no es bueno porque podría olvidar cambiarlo en la próxima ejecución.Cómo lanzar una excepción durante la sesión de depuración en VS2010
Respuesta
Desafortunadamente, Visual Studio aún no admite arrojar una excepción desde la ventana Inmediato.
Además, no admite expresiones lambda, tipos anónimos, inicializadores de colecciones, etc. Algo como .NET 2.0 solamente.
También puede utilizar Debug.Assert(false);
Usted podría utilizar la compilación condicional:
#if DEBUG
throw new Exception("Test");
#endif
EDIT: Con una condición adicional:
#if DEBUG && ENABLETESTEXCEPTION
throw new Exception("Test")
#endif
Se puede crear una configuración personalizada (similar a la versión/depuración) con lo anterior condicional definido (propiedades del proyecto-> Construir-> Símbolos de compilación condicional).
haces esto para probar que está manejando la excepción de código de llamada?
Si es así, es posible que desee analizar algunas pruebas de unidad y utilizar un marco de burla para quitar tihs.
que tienen experiencia con Moq (Mock) http://code.google.com/p/moq/
Hay algunos tutoriales en el sitio de configurar y correr con ella, es bastante fácil una vez que ponerse en marcha.
Primero deberá configurar un proyecto de prueba en su solución, agregar el dll de Moq y luego escribir un método de prueba que configure el Moq de su objeto y le indique que genere una excepción.
Se verá más o menos así para que el método de su objeto arroje una excepción.
[TestMethod]
[ExpectedException(typeof(InvalidOperationException))]
public void YourMethod_ThrowsIOException()
{
var mock = new Moq<YourClass>();
mock.Setup(obj => obj.YourMethod(It.IsAny<string>())).Throws<InvalidOperationException>();
YouClass mockedClass = mock.Object;
mockedClass.YourMethod("anything");
}
Espero que esto ayude.
Usted podría utilizar
bool toThrow = false;
if(toThrow)
{
throw new Exception("Test");
}
tiro y el cambio de verdad. O crea un método/propiedad y llámalos.
La única manera realmente viable que he encontrado para arrojar excepciones desde un método durante la depuración es extraer la variable de debajo de los pies del proceso de ejecución. Es decir. establecer una variable que está a punto de usarse para anular lanzará obviamente una excepción tan pronto como se ejecute. Sin embargo, esto no le permitirá lanzar excepciones personalizadas (por ejemplo, tipos específicos o mensajes).
Para excepciones específicas tenemos que modificar el código de acuerdo con las publicaciones anteriores.
simple y al grano ... ¡gracias! – iGanja
Si está leyendo esta respuesta, Visual Studio 2013 está disponible y admite Editar y Continuar en aplicaciones de 64 bits. Si tiene Visual Studio 2013 y solo está buscando una forma de lanzar excepciones aquí y allá para ver cómo funcionan sus páginas de manejo de excepciones o errores, solo use Editar y Continuar y escriba directamente en su código.
Haga clic en Depurar> Iniciar la depuración. Tu aplicación web se inicia. Coloque un punto de interrupción. Haga clic en su aplicación hasta que llegue el punto de interrupción. Ahora puede agregar instrucciones de tiro directamente en su código. Simplemente ingrese throw new Exception("test")
o lo que sea, guarde el archivo y haga clic en continuar (avance su depurador) y procesará la línea que acaba de agregar como si la hubiera compilado.
el método que está describiendo figura en la pregunta en sí y realmente no veo por qué el cambio en VS2013 para apoyar la edición y continuar en la aplicación de 64 bits es relevante aquí. – Clueless
- 1. Lanzar una nueva excepción al lanzar una excepción antigua
- 2. Lanzar manualmente una excepción
- 3. ¿Cómo puedo lanzar una excepción en Clojure?
- 4. Cómo lanzar una excepción matriz en PHP
- 5. Cómo lanzar una excepción en C?
- 6. ¿Cómo manejo una ClassNotLoadedException durante la depuración?
- 7. inicio VS2010 sesión de depuración con Silverlight URL personalizada parámetros
- 8. ¿Lanzar una excepción sin detener la ejecución?
- 9. Cómo volver a lanzar una excepción
- 10. Lanzar un shell IPython en la excepción
- 11. Problema de depuración en VS2010
- 12. Durante la depuración en Eclipse, ¿es posible saltar a una línea y ejecutarla durante la depuración?
- 13. ¿Puede Monitor.Enter lanzar una excepción?
- 14. lanzar una excepción en el hilo C#
- 15. Cómo omitir una instrucción en Eclipse durante la depuración
- 16. ¿Cómo visualizar el contenido de la variable Graphics en Visual Studio 2010 durante la depuración?
- 17. Depuración de la Excepción en XCode 4
- 18. ¿Es apropiado lanzar una excepción de CoerceValueCallback
- 19. Cómo lanzar una excepción cuando la firma de su método no permite lanzar Exception?
- 20. Lanzar Excepción genérica desalentado?
- 21. Cómo detener el temporizador durante la depuración
- 22. Powershell: crear y lanzar una nueva excepción
- 23. C++ re-lanzar una excepción capturado por
- 24. lanzar una excepción o devolver null
- 25. Lanzar excepción en try bloque
- 26. Lanzar una excepción no definida en la interfaz
- 27. MySQL - ¿Cómo lanzar una excepción en el procedimiento almacenado?
- 28. ¿Cómo lanzar una excepción y salir del programa en Haskell?
- 29. vs2010 C# depuración resaltar color
- 30. Cómo lanzar una excepción marcada de un hilo de Java?
Esto es mejor que el mío, no pensé en eso – Amedio
Pensé en eso, pero todavía pone líneas innecesarias en el código y es un código de depuración que no necesito la mayoría del tiempo. – Clueless
Puede agregar símbolos personalizados (arriba 'DEBUG' es el símbolo), para controlar que se ejecute con eso y no solo en una ejecución de depuración. –