从新T()中捕获错误

时间:2014-03-10 11:26:42

标签: c# generics xamarin.ios

我通常使用此模式从基本屏幕类延迟加载:

public class BaseScreen
{
    public void Goto<T>(T t) where T : BaseScreen, new(){
        if (t == null)
            t = new T();

        NavigatonController.PushViewController(t,true);
    }
}

但我遇到了一种我不喜欢的情况。当在构造t的过程中抛出异常时,忽略该异常,而是在t = new T()得到一个异常。它的内容如下:Exception has been thrown by the target of an invocation。但它并没有暗示真正的异常发生在哪里。我试过捕捉它但仍然没有找到任何信息。当然,最终我找到了它,但我想知道是否有办法直接捕获这些错误。我抛出异常来帮助我知道我是否做错了但是如果我将要看到的唯一例外就是我之前提到过的那个例子,这是毫无意义的。因此,我可以做点什么吗?或者这只是一种糟糕的模式?

1 个答案:

答案 0 :(得分:2)

您应该检查InnerException以获得错误的真正原因