Created
May 10, 2012 08:32
-
-
Save jeromeetienne/2651899 to your computer and use it in GitHub Desktop.
a console.assert which actually stop the execution
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* A console.assert which actually stop the exectution. | |
* default console.assert() is a plain display, such as console.log() or console.error(); | |
* It doesnt stop the execution like assert() is meant to do. This is a little code to | |
* "workaround this limitation" :) thanks @jensarp | |
* | |
* Usage: | |
* console.assert(foo === bar); // Will throw if not equal | |
* console.assert(foo === bar, 'Dude, foo does not equal bar'); // Will throw with custom error message | |
* | |
* To trigger js debugger on failed assert, do | |
* console.assert.useDebugger = true; | |
*/ | |
console.assert = function(cond, text){ | |
if( cond ) return; | |
if( console.assert.useDebugger ) debugger; | |
throw new Error(text || "Assertion failed!"); | |
}; |
Here's a forked version w/ a third param: https://gist.github.com/2651966
i coded the modifications you adviced. The third parameter is console.assert.useDebugger in my version. thus it is backward compatible
and you removed the text
which is more eleguant :)
Ok, now it's time to use it in real life and see if it proves useful :)
This pauses within the stack of the custom 'assert' function, further search I have found that you can pause on console.assert
by enabling it during dev in Chrome Devleoper Tools, see http://stackoverflow.com/questions/12163266/break-into-chrome-debugger-when-console-assert-fails
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Sweet! Just two notes:
If it throws, it won't reach the debugger statement, so I'd introduce a third param.
Also, there was some issue with throwing without a
new Error()
... I don't remember exactly what it was, but I think it won't show a stack trace on some browsers or something like that.