We usually throw exception when invalid input is passed to a method or when a object is about to enter invalid state. Let\'s consider the following example
Are you sure you read the page you were pointing to? In the end it boils down to:
The call to Thread.Abort boils down to .NET setting a flag on a thread to be aborted and then checking that flag during certain points in the thread’s lifetime, throwing the exception if the flag is set.