Error: чиним стектрейс в огненном жуке
открываем огненную лису с сидящим на ней огненным жуком и экспериментируем..
function throwException( ){ (void 0)() } throwException() этот код выведет в консоль ошибку и стектрейс для неё function throwError( ){ throw new Error( 'custom error' ) } throwError() а этот - только ошибку, а стектрейс - потеряется следующий небольшой скрипт чинит стектрейс при использовании кастомных исключений: var Error= new function( Original ){ Version: 1 Description: "repairs mozilla's stacktrace in custom errors" License: 'public domain' Implementation: var Error= ( window.console && Original && ( new Original ).stack ) ? function( message ){ var e= new Original( message ) var custom= function( msg, file, line ){ restore() if( other && other.apply( this, arguments ) ) return true if(( e.message != msg )||( e.fileName != file )||( e.lineNumber != line )) return var stack= e.stack.split( '\n' ) stack= stack.slice( 2, stack.length - 1 ) var self= this stack[0].replace( /^.*\(.+?\)@(.+):(\d+)$/, function( str, file, line ){ e.fileName= file e.lineNumber= Number( line ) }) stack[ stack.length - 1 ]= stack[ stack.length - 1 ].replace( /^@.+:\d+$/, function( str ){ return 'source file()' + str }) e.stack= stack.join( '\n' ) console.error( e ) return true } var other= window.onerror var restore= function(){ if( window.onerror === custom ) window.onerror= other } window.onerror= custom setTimeout( restore, 1 ) return e } : Original Export: return Error Usage: throw new Error( 'custom error' ) }( window.Error ) |
Часовой пояс GMT +3, время: 05:08. |