Sunday, May 19, 2024
 Popular · Latest · Hot · Upcoming
67
rated 0 times [  68] [ 1]  / answers: 1 / hits: 24127  / 8 Years ago, fri, july 1, 2016, 12:00:00

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:




  1. 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!

  2. 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.




  1. Should I create a new object like in the throw documentation, or create an Error Message?

  2. Doesn't JavaScript have a InvalidArgumentException object that I can use?

  3. How should I proceed in order to have a maintainable way to throw errors that uses ECMA6?


More From » exception

 Answers
26

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:




  1. Using the solution proposed by Toan: https://stackoverflow.com/a/38146237/1337392


  2. It is a possible, albeit if you want customization you do need to create your own object.




Answers:




  1. 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)

  2. Javascript does not have InvalidArgumentException (by Toan Nguyen)

  3. 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!


[#61552] Wednesday, June 29, 2016, 8 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
bradenc

Total Points: 75
Total Questions: 96
Total Answers: 129

Location: Burundi
Member since Thu, Feb 10, 2022
2 Years ago
;