Path: csiph.com!.POSTED.204-73-239-109.cust.centrio.cz!not-for-mail From: Cezary Tomczyk Newsgroups: comp.lang.javascript Subject: Re: Object.defineProperties Date: Sun, 7 May 2017 20:08:23 +0200 Organization: csiph.com Internet News Service Message-ID: References: <1943190.NgBsaNRSFp@PointedEars.de> <1592229.TLkxdtWsSY@PointedEars.de> <38321860.ZmDeoRnzTM@PointedEars.de> <1783967.oMNUckLgyt@PointedEars.de> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Sun, 7 May 2017 18:08:24 +0000 (UTC) Injection-Info: csiph.com; posting-host="204-73-239-109.cust.centrio.cz:109.239.73.204"; logging-data="75542"; mail-complaints-to="admin@kev009.com" User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 In-Reply-To: <1783967.oMNUckLgyt@PointedEars.de> Xref: csiph.com comp.lang.javascript:33251 On 07/05/2017 17:11, Thomas 'PointedEars' Lahn wrote: > Cezary Tomczyk wrote: > >> On 07/05/2017 02:37, Thomas 'PointedEars' Lahn wrote: >>> Cezary Tomczyk wrote: >>>> function isTypeOf(obj, typeToCheck) { >>>> var type; >>>> >>>> if (arguments.length < 2) { >>>> throw new Error('[isTypeOf] requires two arguments'); >>>> } >>> >>> You should throw a TypeError or a custom-typed exception (I throw >>> object.js:jsx.InvalidArgumentError for such). >> >> Nice tip. I will use: >> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError >> >> However, optional argument 'lineNumber' there is a bit weird to me as I >> don't know where the specified fragment of code will be in a production >> version (after minification) and therefore I can't pass there a line >> number. > > It is optional and proprietary anyway. > > But, if available, you can obtain the URI and line number from the “stack” > property and set them later. (This is where custom-typed exceptions come > in.) Thank you. I am going to use it in that way. >>> The message is confusing (“Is ‘isTypeOf’ the element of a one-element >>> array?”) >> >> The purpose of that message is to tell you where the message happened, >> here the '[isTypeOf]' refers to function name, and what happened, here >> is a message that 'requires two arguments'. > > I *know* what it is *supposed* to tell. It is nevertheless confusing to the > person reading it. The message should not require such an explanation. > > It should also say more than “requires two arguments” because the next > question of the developer would be “What arguments does it require, then?”. And then, if available, developer may look at the documentation. ;-) > See also jsx.InvalidArgumentError; currently > > > > Usage example: > > But I agree that the error message should be more precise. One of the most annoying thing is to get unclear error message. -- Cezary Tomczyk http://www.ctomczyk.pl/ https://www.aslint.org/ - Accessibility validation tool