This should probably be moved to codereview because it looks to me like a question about coding style.
However:
Your upload()
method is badly designed. It should accept a parameter, not grab the data from $_FILES
- the outside user should pass it into the function. No class should generally grab data from a superglobal or global variable.
Honouring that dismisses the first reason to throw an exception. :)
And then? It's kind of hard to discuss details further because there isn't really much code to see, so I fall back to the general remarks:
Exceptions should NOT be used as a replacement for goto
. They should signal exceptional state that could not be anticipated.
When validating a form, invalid form data is no exceptional state that cannot be anticipated - it is one of two usual cases. Effectively you are validating the form data in your class - you shouldn't throw exceptions if the form is not valid.
Another thing: Do not hide the thing that went wrong in the exception message. It makes it so much harder to use the class if I cannot catch the different exception classes thrown with multiple catch statements, but would have to look at the messages.
And because you are asking about making that code usable to others: Use namespaces, PSR-0 compatible autoloading and your own exception classes. And do not grab data from superglobals.