user3070072
user3070072

Reputation: 620

How to catch error from bool type method?

I am writing to seek help with regards to implementing a return statement for my test method. I am currently getting a null response from my test() method, but I would like to know, how can I catch the error from my "IsValidEmailDomain" method in my "test" method:

public static bool IsValidEmailDomain(MailAddress address)
{
    if (address == null) return false;
    var response = DnsClient.Default.Resolve(address.Host, RecordType.Mx);
    try
    {               
        if (response == null || response.AnswerRecords == null) return false;
    }
    catch (FormatException ex)
    {
        ex.ToString();
        throw ex;
        //return false;
    }

    return response.AnswerRecords.OfType<MxRecord>().Any();
}

public static bool IsValidEmailDomain(string address)
{
    if (string.IsNullOrWhiteSpace(address)) return false;

    MailAddress theAddress;
    try
    {
        theAddress = new MailAddress(address);
    }
    catch (FormatException)
    {
        return false;
    }

    return IsValidEmailDomain(theAddress);
}

public static string test()
{
    string mail = "########";

    if (IsValidEmailDomain(mail))
    {
        return mail;
    }
    else
    {
        ///How to return error from IsValidEmailDomain() method.
    }
}

Any hint or suggestion would be most appreciated.

Upvotes: 0

Views: 103

Answers (2)

TyCobb
TyCobb

Reputation: 9089

There are a couple of ways to do this.

  • Use an out parameter.
  • Throw an exception if there was an issue. (Defeats the purpose of bool)

I usually go with a combination when I come across something like this.

public bool IsValidEmailDomain(string email)
{
    return IsValidEmailDomain(email, false);
}

public bool IsValidEmailDomain(string email, bool throwErrorIfInvalid)
{
    string invalidMessage;
    var valid = ValidateEmailDomain(email, out invalidMessage);
    if(valid)
        return true;

    if (throwErrorIfInvalid)
        throw new Exception(invalidMessage);

    return false;
}

public bool ValidateEmailDomain(string email, out string invalidMessage)
{
    invalidMessage= null;
    if (....) // Whatever your logic is.
        return true;

    invalidMessage= "Invalid due to ....";
    return false;
}

Upvotes: 0

sam starobin
sam starobin

Reputation: 258

  public static string test()
        {
            string mail = "########";
            bool? answer;
            Exception ex;
    try
    {
            answer = IsValidEmailDomain(mail);
    }
    catch(Exception e)
    {
        ex = e;
    }
            if (answer)
            {
                return mail;
            }
            else
            {
                // here you can check to see if the answer is null or if you actually got an exception
            }
        }

Upvotes: 1

Related Questions