@soumyadeep2007 Checked exceptions are certainly more expressive and explicit than the code block arbitrarily throwing unhandled exceptions. The point of wrapping value into a context(Monad) is to later use it with combinators without unwrapping it. For instance your example above can be written as
orders.map(order -> System,out.printn(order)).
It works whether the list is null or not. The value needs to be unwrapped when code wants to transform to a different value when value is different.