In some cases you want to modify the kind of an exception, and after that holding the initial exception as internal exception is the greatest you can do. While it should be toss new MyCustomException(myMessage, ex); needless to say. throw is for rethrowing a caught exception. This can be helpful https://rivernqdcg.blog-a-story.com/11725660/8-10-options