Objective
Throw InvalidArgumentException in a JavaScript method like one does in Java or similar languages.
Background
I have been trying to familiarize myself with JavaSctipt error handling, and I know I can throw exceptions using the throw
keyword.
To achieve this, I read the throw documentation on MDN and the Error documentation on MDN as well.
Problem
So far this is my code:
if (mySize >= myArray.length)
throw new Error("InvalidArgumentExcpetion - BANG!!!!");
This code has some problems for me:
- I have the text in the exception itself. Right now I have BANG, but tomorrow I may want BONG and if I decide to change it, I have to look everywhere!
- I am using an Error, and not really a new object with the type InvalidArgumentExcpetion. Is this the correct way?
Questions
So now I am confused.
- Should I create a new object like in the throw documentation, or create an Error Message?
- Doesn't JavaScript have a InvalidArgumentException object that I can use?
- How should I proceed in order to have a maintainable way to throw errors that uses ECMA6?
After doing research, I now have come down to a solution that I like. Special kudos to Toan, I would gladly chose his answer, but since I do feel that it is still a little bit incomplete, I decided to create my own answer with my own findings. Hope it helps someone !
Problems:
Using the solution proposed by Toan: https://stackoverflow.com/a/38146237/1337392
It is a possible, albeit if you want customization you do need to create your own object.
Answers:
- If you want to handle exceptions based on their types like in Java, you should create a new object like in the document. (by Toan Nguyen)
- Javascript does not have InvalidArgumentException (by Toan Nguyen)
- After reasearching, this solution is the one I found: https://stackoverflow.com/a/32750746/1337392
Credits:
- Toan Nguyen, for the first answers and his great ideas
- David Wickström, for suggesting an article that led to an article that led to a blog where the answer I was looking for was.
Thanks for all the help guys! kudos++ for all!