Upload
sebastian-springer
View
116
Download
0
Tags:
Embed Size (px)
DESCRIPTION
My Talk at
Citation preview
Handle with careFehlerbehandlung in JavaScript
Friday 8 November 13
WER BIN ICH?
• Sebastian Springer
• https://github.com/sspringer82
• @basti_springer
Friday 8 November 13
Friday 8 November 13
Was ist ein Fehler?
☠Friday 8 November 13
Was ist ein Fehler?
☠Whoops, this should not happen.
Friday 8 November 13
Fehlertypen
Friday 8 November 13
Fehlertypen
Friday 8 November 13
Fehlertypen
Friday 8 November 13
Fehlertypen
Friday 8 November 13
Fehlertypen
Friday 8 November 13
Fehlertypen
Friday 8 November 13
Eigene Fehler
throw new Error('An error occurred');
Friday 8 November 13
Eigene Fehler
var MyErr = function (message) { this.message = message; this.name = 'MyErr';}
MyErr.prototype = new Error();MyErr.prototype.constructor = MyErr;
Friday 8 November 13
Friday 8 November 13
Abfangen von Fehlern
try { throw new Error('Hello World');} catch (e) { console.log(e);} finally { console.log('Finished');}
Friday 8 November 13
Abfangen von Fehlern
try {
} catch (RangeError e) { }
Friday 8 November 13
Abfangen von Fehlern
try {
} catch (RangeError e) { }
Friday 8 November 13
Abfangen von Fehlern
try {
} catch (e) { if (e instanceof RangeError) { }}
Friday 8 November 13
Callbacks
Friday 8 November 13
Fehler in CallbacksApplikation Asynchrone
Ausführung
Friday 8 November 13
Fehler in CallbacksApplikation Asynchrone
Ausführung
Friday 8 November 13
Fehler in CallbacksApplikation Asynchrone
Ausführung
Operation
Friday 8 November 13
Fehler in CallbacksApplikation Asynchrone
Ausführung
Operation
Friday 8 November 13
Fehler in CallbacksApplikation Asynchrone
Ausführung
Operation
☠☂ ☏☣☢
Friday 8 November 13
Fehler in CallbacksApplikation Asynchrone
Ausführung
Operation
Callback☠☂ ☏☣☢
Friday 8 November 13
Fehler in CallbacksApplikation Asynchrone
Ausführung
Operation
Callback☠☂ ☏☣☢
Friday 8 November 13
Fehler in Callbacksfunction myTimeout() { throw new Error("whoops");}
Friday 8 November 13
Fehler in Callbacksfunction myTimeout() { throw new Error("whoops");}
try { setTimeout("myTimeout()", 0);} catch (e) { console.log(e);}
Friday 8 November 13
Fehler in Callbacksfunction myTimeout() { throw new Error("whoops");}
try { setTimeout("myTimeout()", 0);} catch (e) { console.log(e);}
☠Friday 8 November 13
Friday 8 November 13
Fehler in Callbacks$.ajax({ url: ‘/something’, success: function (data) { ... }, error: function (data) { ... }});
Friday 8 November 13
Friday 8 November 13
Fehler in Callbacks
var fs = require('fs');
fs.readFile('file', function (err, d) { ...});
Friday 8 November 13
Fehler in Callbacks
var fs = require('fs');
fs.readFile('file', function (err, d) { ...});
null
Friday 8 November 13
Fehler in Callbacks
Error { errno: ... code: ... path: ... message: ...}
Friday 8 November 13
Events
Friday 8 November 13
Error EventsSubject Observer
Friday 8 November 13
Error EventsSubject Observer
Friday 8 November 13
Error EventsSubject Observer
Friday 8 November 13
Error Events
on(‘error’, function...
Subject Observer
Friday 8 November 13
Error Events
☠☂ ☏☣☢
on(‘error’, function...
Subject Observer
Friday 8 November 13
Error Events
☠☂ ☏☣☢
on(‘error’, function...
trigger(‘error’, {...
Subject Observer
Friday 8 November 13
Error Events
☠☂ ☏☣☢
on(‘error’, function...
trigger(‘error’, {...
Subject Observer
Friday 8 November 13
Promiseshttp://wiki.commonjs.org/wiki/Promises
Friday 8 November 13
Promises
In Javascript, promises are objects which represent the pending result of an asynchronous operation.
(Martin Fowler)
Friday 8 November 13
Promises$.ajax({ url: ‘/my/url’}).done(function (data) { ...}).fail(function (data) { ...}).always(function (data) { ...});
Friday 8 November 13
Promisesfunction promisedFunc() { var def = $.Deferred(); // do something asynchronous // success def.resolve(); // fail def.reject(); return def.promise();}
Friday 8 November 13
Promises
promisedFunc().done(function () { // success}).fail(function () { // failure}).always(function () { // success & failure});
Friday 8 November 13
Promises
$.when( promisedFunc(), promisedFunc()).then(success, failure);
Friday 8 November 13
Promises
• http://api.jquery.com/category/deferred-object/Client only
• https://github.com/kriskowal/qClient + Server
• https://github.com/kriszyp/node-promiseServer only
Friday 8 November 13
Node.js Domain
Friday 8 November 13
Node domain
var domain = require(‘domain’).create();domain.on(‘error’, function (err) { console.log(err);});
domain.run(function () { ...});
Friday 8 November 13
Node Domain
• error-Events
• Exceptions
Wird ausgeführt bei:
Friday 8 November 13
window.onerror
Friday 8 November 13
window.onerror
catch it all!
Friday 8 November 13
window.onerror
window.onerror = function (msg, url, nr){ ... return true;}
Friday 8 November 13
window.onerror
window.onerror
Code
Friday 8 November 13
und jetzt?
Friday 8 November 13
und jetzt?
Logging FTW!
Friday 8 November 13
Logging
Client Server
Friday 8 November 13
Logging
Client
☠☂ ☏☣☢
Server
Friday 8 November 13
Logging
Client
☠☂ ☏☣☢
ServerLog Message
Friday 8 November 13
Logging
Client
☠☂ ☏☣☢
ServerLog Message
Friday 8 November 13
Loggingwindow.onerror = function (msg, url, nr){ $.ajax({ url: ‘/logger’ data: { msg: msg, url: url, nr: nr } }); return true;}Friday 8 November 13
Logging
Fire and Forget
Friday 8 November 13
Fragen?
Friday 8 November 13
Sebastian [email protected]
Mayflower GmbHMannhardtstr. 680538 MünchenDeutschland
@basti_springer
https://github.com/sspringer82
Friday 8 November 13