尝试抓住继续

时间:2014-03-14 12:29:30

标签: c# try-catch

我想问一下,如果有一种方法让我在我的try块中放入一个if条件,当条件返回true时它会进入我的try条件的下一行吗?

以下是我的代码片段。

private void sendReminderEmail_MethodInvoking(object sender, EventArgs e)
    {
        try
        {
            if (editedCustomerRequest.OwnerID == null)
            {
                return;
            }

            Hashtable xsltValues = new Hashtable();

            xsltValues.Add("fso:LicenseKeyRequest", request);
            string xsltTemplateFile = string.Format("{0}{1}", workflowProperties.WebUrl, _configItems[_lkrAdminReminderEmailTemplateUrl]);                
            Email email = new Email(xsltTemplateFile, xsltValues);
         }

3 个答案:

答案 0 :(得分:1)

没有

  

尝试条件

但是,如果您正在寻找可以在循环中使用的continuebreak之类的东西,那么try block就没有这样的关键字。这是因为try块仅用于异常捕获,或者如果您想要添加finally代码而不管返回什么内容。 try块不是有条件的。但是,这可以通过以适当的方式构造循环/条件块来实现。

try
{
    if (editedCustomerRequest.OwnerID != null)
    {
        Hashtable xsltValues = new Hashtable();

        xsltValues.Add("fso:LicenseKeyRequest", request);
        string xsltTemplateFile = string.Format("{0}{1}", workflowProperties.WebUrl, _configItems[_lkrAdminReminderEmailTemplateUrl]);
        Email email = new Email(xsltTemplateFile, xsltValues);
    }
}

您可以使用goto,但我不推荐它。诉诸goto意味着你做错了什么,而应该改编你的计划。我只是想让你知道技术上是一种选择。注意:goto仅在其后面有代码时才有效。但是再次......你不应该使用它。

try
{
    if (editedCustomerRequest.OwnerID == null)
    {
        goto exitTry;
    }

    Hashtable xsltValues = new Hashtable();

    xsltValues.Add("fso:LicenseKeyRequest", request);
    string xsltTemplateFile = string.Format("{0}{1}", workflowProperties.WebUrl, _configItems[_lkrAdminReminderEmailTemplateUrl]);                
    Email email = new Email(xsltTemplateFile, xsltValues);
 }
 catch(){}
 exitTry:

答案 1 :(得分:0)

只需反转if子句:

if (editedCustomerRequest.OwnerID != null)
{
    // rest of your code
}

那就是我对你的问题所理解的。我更喜欢你现在的方式,但这是基于意见的。

答案 2 :(得分:-1)

当您使用try / catch语句时,它会分析您在try语句中放入的所有代码。如果您正在寻找一种方法来查看try语句失败的位置,我建议您只需调试代码。您还可以在try语句中创建多个try catch。