Behold the difference between Logic and Language.
In Logic, as demonstrated by CoolHandLouis, a conditional is a Proposition of a peculiar sort: p ⇒ q. This declares a truth-relationship between two Propositions, p and q, each of which is either True (T) or False (F), and the truth of the conditional Proposition is represented in a Truth Table such as that CoolHandLouis presents.
In Language, however, a conditional is not a Proposition but an Utterance. An Utterance may express a logical Proposition, but most do not; they express not relationships between Propositions but relationships between unactualized Eventualities. Such Eventualities are not current at the time of Utterance, and consequently they can have no truth-value; and in many cases, such as counterfactual conditionals, they can never have truth-value. They are neither True nor False but actualized or unactualized. And even in those cases where the Eventualities are actualized or conclusively not actualized, these outcomes do not necessarily entail a judgment of Truth or Falsity of the Utterance; for non-Propositional Utterances are Promises or Predictions, which are likewise neither True nor False but actualized or unactualized.
In the instant case, if I promise that if it rains I'll bring an umbrella, and in the event it does rain and I don’t bring an umbrella, my soaked wife will not chide me for uttering a falsehood, but for breaking a promise. And if it does not rain and I don’t bring an umbrella, she will not praise me for uttering a truth; she will say “It’s a good thing it didn’t rain.”
For more info, see conditional sentences.