Enhace run function with error handling
Distinguish between setup and time loop throw exceptions if either of it fails, make it possible to not run time loop.
Edited by Reza Housseini
Distinguish between setup and time loop throw exceptions if either of it fails, make it possible to not run time loop.