- Are those samples below equivalent?
throw(...)
is different from the two others, is deprecated and going to be removed in a future standard.
Second and third are mutually equivalent (exceptions apply 1) as far as the language is concerned. Lack of exception specification implies that the function may throw (also 1).
Documenting what exceptions are thrown and in which situations is a good practice.
1 Deallocation functions and destructors are implicitly non-throwing but can be explicitly specified otherwise. Implicitly generated or defaulted special member functions etc. may "inherit" specification from base / members i.e. they are implicitly non-throwing unless a base or a member is potentially throwing.