Error handling with F♯
Error handling is hard. In mainstream OOP languages such as C♯ and Java, the standard way of handling unexpected things is to use exceptions. There are many of these, NullReferenceException, InvalidOperationException, InvalidCastException, etc.