我有一个Dispatcher类,其方法发送如下:
public class Dispatcher : IDispatcher {
public void Send(Order order) {
Type type = typeof(IOrderHandler<>).MakeGenericType(order.GetType());
IOrderHandler handler = (IOrderHandler)ObjectFactory.GetInstance(type);
try {
handler.Handle(order);
} catch (Exception exception) {
ILogger logger = ObjectFactory.GetInstance<ILogger>();
logger.Send(exception);
}
}
} // Send
我正在处理订单并捕获例外......
当我正在调试时,我仍想触发异常。
我该怎么做?
谢谢你, 米格尔
答案 0 :(得分:5)
只需将此行添加到catch块:
if (System.Diagnostics.Debugger.IsAttached) throw;
答案 1 :(得分:4)
您可以在catch块中添加以下内容:
#if DEBUG
throw;
#endif
所以你的代码看起来像是:
try
{
handler.Handle(order);
}
catch (Exception exception)
{
ILogger logger = ObjectFactory.GetInstance<ILogger>();
logger.Send(exception);
#if DEBUG
throw;
#endif
}
如果您想在Release
配置中调试期间在IDE中进行异常通知,请使用@Hans Passant的answer,因为这样可以让您了解Release
和{的异常{1}}配置。
答案 2 :(得分:2)
好吧,基于您仍然要抛出异常的事实,但只有在调试时,您才能执行此操作:
Debug
菜单,然后选择Exceptions
。Common Language Runtime Exceptions
标题下Thrown
旁边的复选框。这将导致您获得第一次机会异常。这意味着IDE会在调试时通知您,并且在处理继续之前您将有机会处理它。这实际上会让你在它被记录之前看到它。
更重要的是,您实际上可以通过此方法取消选择您不想要的异常,因为它们会按Common Language Runtime Exceptions
分组下的异常类型进行细分。
答案 3 :(得分:0)
转到调试&gt;异常并检查“抛出”的CLR异常,这将带您到那里。或者在catch块上放置一个断点。