Suche senden
Hochladen
Error handling in JavaScript
•
2 gefällt mir
•
1,968 views
Sebastian Springer
Folgen
My Talk at
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 67
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Tech Talks - Fundamentos JavaScript
Tech Talks - Fundamentos JavaScript
BVision
Metamoose
Metamoose
Ynon Perek
Kumpulan script jahil
Kumpulan script jahil
UNP PGRI KEDIRI
Javascript Common Mistakes
Javascript Common Mistakes
동수 장
Growing Pains: Avoiding Module Hell
Growing Pains: Avoiding Module Hell
Puppet
Javascript modules
Javascript modules
Ron Apelbaum
Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)
Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)
Red Hat Developers
DevNexus 2016
DevNexus 2016
Stephanie Brubaker
Empfohlen
Tech Talks - Fundamentos JavaScript
Tech Talks - Fundamentos JavaScript
BVision
Metamoose
Metamoose
Ynon Perek
Kumpulan script jahil
Kumpulan script jahil
UNP PGRI KEDIRI
Javascript Common Mistakes
Javascript Common Mistakes
동수 장
Growing Pains: Avoiding Module Hell
Growing Pains: Avoiding Module Hell
Puppet
Javascript modules
Javascript modules
Ron Apelbaum
Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)
Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)
Red Hat Developers
DevNexus 2016
DevNexus 2016
Stephanie Brubaker
Schnelleinstieg in Angular
Schnelleinstieg in Angular
Sebastian Springer
Creating Enterprise Web Applications with Node.js
Creating Enterprise Web Applications with Node.js
Sebastian Springer
Divide and Conquer – Microservices with Node.js
Divide and Conquer – Microservices with Node.js
Sebastian Springer
From Zero to Hero – Web Performance
From Zero to Hero – Web Performance
Sebastian Springer
Von 0 auf 100 - Performance im Web
Von 0 auf 100 - Performance im Web
Sebastian Springer
A/B Testing mit Node.js
A/B Testing mit Node.js
Sebastian Springer
Angular2
Angular2
Sebastian Springer
Einführung in React
Einführung in React
Sebastian Springer
JavaScript Performance
JavaScript Performance
Sebastian Springer
ECMAScript 6 im Produktivbetrieb
ECMAScript 6 im Produktivbetrieb
Sebastian Springer
Streams in Node.js
Streams in Node.js
Sebastian Springer
JavaScript Performance
JavaScript Performance
Sebastian Springer
Große Applikationen mit AngularJS
Große Applikationen mit AngularJS
Sebastian Springer
Testing tools
Testing tools
Sebastian Springer
Node.js Security
Node.js Security
Sebastian Springer
Typescript
Typescript
Sebastian Springer
Reactive Programming
Reactive Programming
Sebastian Springer
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScript
Sebastian Springer
Warum ECMAScript 6 die Welt ein Stückchen besser macht
Warum ECMAScript 6 die Welt ein Stückchen besser macht
Sebastian Springer
Lean Startup mit JavaScript
Lean Startup mit JavaScript
Sebastian Springer
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
AliaaTarek5
Weitere ähnliche Inhalte
Mehr von Sebastian Springer
Schnelleinstieg in Angular
Schnelleinstieg in Angular
Sebastian Springer
Creating Enterprise Web Applications with Node.js
Creating Enterprise Web Applications with Node.js
Sebastian Springer
Divide and Conquer – Microservices with Node.js
Divide and Conquer – Microservices with Node.js
Sebastian Springer
From Zero to Hero – Web Performance
From Zero to Hero – Web Performance
Sebastian Springer
Von 0 auf 100 - Performance im Web
Von 0 auf 100 - Performance im Web
Sebastian Springer
A/B Testing mit Node.js
A/B Testing mit Node.js
Sebastian Springer
Angular2
Angular2
Sebastian Springer
Einführung in React
Einführung in React
Sebastian Springer
JavaScript Performance
JavaScript Performance
Sebastian Springer
ECMAScript 6 im Produktivbetrieb
ECMAScript 6 im Produktivbetrieb
Sebastian Springer
Streams in Node.js
Streams in Node.js
Sebastian Springer
JavaScript Performance
JavaScript Performance
Sebastian Springer
Große Applikationen mit AngularJS
Große Applikationen mit AngularJS
Sebastian Springer
Testing tools
Testing tools
Sebastian Springer
Node.js Security
Node.js Security
Sebastian Springer
Typescript
Typescript
Sebastian Springer
Reactive Programming
Reactive Programming
Sebastian Springer
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScript
Sebastian Springer
Warum ECMAScript 6 die Welt ein Stückchen besser macht
Warum ECMAScript 6 die Welt ein Stückchen besser macht
Sebastian Springer
Lean Startup mit JavaScript
Lean Startup mit JavaScript
Sebastian Springer
Mehr von Sebastian Springer
(20)
Schnelleinstieg in Angular
Schnelleinstieg in Angular
Creating Enterprise Web Applications with Node.js
Creating Enterprise Web Applications with Node.js
Divide and Conquer – Microservices with Node.js
Divide and Conquer – Microservices with Node.js
From Zero to Hero – Web Performance
From Zero to Hero – Web Performance
Von 0 auf 100 - Performance im Web
Von 0 auf 100 - Performance im Web
A/B Testing mit Node.js
A/B Testing mit Node.js
Angular2
Angular2
Einführung in React
Einführung in React
JavaScript Performance
JavaScript Performance
ECMAScript 6 im Produktivbetrieb
ECMAScript 6 im Produktivbetrieb
Streams in Node.js
Streams in Node.js
JavaScript Performance
JavaScript Performance
Große Applikationen mit AngularJS
Große Applikationen mit AngularJS
Testing tools
Testing tools
Node.js Security
Node.js Security
Typescript
Typescript
Reactive Programming
Reactive Programming
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScript
Warum ECMAScript 6 die Welt ein Stückchen besser macht
Warum ECMAScript 6 die Welt ein Stückchen besser macht
Lean Startup mit JavaScript
Lean Startup mit JavaScript
Kürzlich hochgeladen
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
AliaaTarek5
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
LoriGlavin3
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Alkin Tezuysal
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
Lonnie McRorey
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
panagenda
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
Ravi Sanghani
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
Inflectra
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
Sergiu Bodiu
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
Curtis Poe
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
Hiroshi SHIBATA
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
Wes McKinney
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
BookNet Canada
2024 April Patch Tuesday
2024 April Patch Tuesday
Ivanti
A Framework for Development in the AI Age
A Framework for Development in the AI Age
Cprime
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
LoriGlavin3
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
Alan Dix
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
Pixlogix Infotech
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
IES VE
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
Mydbops
Kürzlich hochgeladen
(20)
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
2024 April Patch Tuesday
2024 April Patch Tuesday
A Framework for Development in the AI Age
A Framework for Development in the AI Age
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
Error handling in JavaScript
1.
Handle with care Fehlerbehandlung
in JavaScript Friday 8 November 13
2.
WER BIN ICH? • Sebastian
Springer • https://github.com/sspringer82 • @basti_springer Friday 8 November 13
3.
Friday 8 November
13
4.
Was ist ein
Fehler? ☠ Friday 8 November 13
5.
Was ist ein
Fehler? ☠ Whoops, this should not happen. Friday 8 November 13
6.
Fehlertypen Friday 8 November
13
7.
Fehlertypen Friday 8 November
13
8.
Fehlertypen Friday 8 November
13
9.
Fehlertypen Friday 8 November
13
10.
Fehlertypen Friday 8 November
13
11.
Fehlertypen Friday 8 November
13
12.
Eigene Fehler throw new
Error('An error occurred'); Friday 8 November 13
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
14.
Friday 8 November
13
15.
Abfangen von Fehlern try
{ throw new Error('Hello World'); } catch (e) { console.log(e); } finally { console.log('Finished'); } Friday 8 November 13
16.
Abfangen von Fehlern try
{ } catch (RangeError e) { } Friday 8 November 13
17.
Abfangen von Fehlern try
{ } catch (RangeError e) { } Friday 8 November 13
18.
Abfangen von Fehlern try
{ } catch (e) { if (e instanceof RangeError) { } } Friday 8 November 13
19.
Callbacks Friday 8 November
13
20.
Fehler in Callbacks Applikation Friday
8 November 13 Asynchrone Ausführung
21.
Fehler in Callbacks Applikation Friday
8 November 13 Asynchrone Ausführung
22.
Fehler in Callbacks Asynchrone Ausführung Applikation Operation Friday
8 November 13
23.
Fehler in Callbacks Asynchrone Ausführung Applikation Operation Friday
8 November 13
24.
Fehler in Callbacks Asynchrone Ausführung Applikation Operation ☠☂
☏☣☢ Friday 8 November 13
25.
Fehler in Callbacks Asynchrone Ausführung Applikation Operation Callback Friday
8 November 13 ☠☂ ☏☣☢
26.
Fehler in Callbacks Asynchrone Ausführung Applikation Operation Callback Friday
8 November 13 ☠☂ ☏☣☢
27.
Fehler in Callbacks function
myTimeout() { throw new Error("whoops"); } Friday 8 November 13
28.
Fehler in Callbacks function
myTimeout() { throw new Error("whoops"); } try { setTimeout("myTimeout()", 0); } catch (e) { console.log(e); } Friday 8 November 13
29.
Fehler in Callbacks ☠ function
myTimeout() { throw new Error("whoops"); } try { setTimeout("myTimeout()", 0); } catch (e) { console.log(e); } Friday 8 November 13
30.
Friday 8 November
13
31.
Fehler in Callbacks $.ajax({ url:
‘/something’, success: function (data) { ... }, error: function (data) { ... } }); Friday 8 November 13
32.
Friday 8 November
13
33.
Fehler in Callbacks var
fs = require('fs'); fs.readFile('file', function (err, d) { ... }); Friday 8 November 13
34.
Fehler in Callbacks var
fs = require('fs'); fs.readFile('file', function (err, d) { ... }); null Friday 8 November 13
35.
Fehler in Callbacks Error
{ errno: ... code: ... path: ... message: ... } Friday 8 November 13
36.
Events Friday 8 November
13
37.
Error Events Subject Friday 8
November 13 Observer
38.
Error Events Subject Friday 8
November 13 Observer
39.
Error Events Subject Friday 8
November 13 Observer
40.
Error Events Subject Observer on(‘error’, function... Friday
8 November 13
41.
Error Events Subject Observer on(‘error’, function... ☠☂
☏☣☢ Friday 8 November 13
42.
Error Events Subject Observer on(‘error’, function... ☠☂
☏☣☢ trigger(‘error’, {... Friday 8 November 13
43.
Error Events Subject Observer on(‘error’, function... ☠☂
☏☣☢ trigger(‘error’, {... Friday 8 November 13
44.
Promises http://wiki.commonjs.org/wiki/Promises Friday 8 November
13
45.
Promises In Javascript, promises
are objects which represent the pending result of an asynchronous operation. (Martin Fowler) Friday 8 November 13
46.
Promises $.ajax({ url: ‘/my/url’ }).done(function (data)
{ ... }).fail(function (data) { ... }).always(function (data) { ... }); Friday 8 November 13
47.
Promises function promisedFunc() { var
def = $.Deferred(); // do something asynchronous // success def.resolve(); // fail def.reject(); return def.promise(); } Friday 8 November 13
48.
Promises promisedFunc().done(function () { //
success }).fail(function () { // failure }).always(function () { // success & failure }); Friday 8 November 13
49.
Promises $.when( promisedFunc(), promisedFunc() ).then(success, failure); Friday 8
November 13
50.
Promises • http://api.jquery.com/category/deferred-object/ Client only • https://github.com/kriskowal/q Client +
Server • https://github.com/kriszyp/node-promise Server only Friday 8 November 13
51.
Node.js Domain Friday 8
November 13
52.
Node domain var domain
= require(‘domain’).create(); domain.on(‘error’, function (err) { console.log(err); }); domain.run(function () { ... }); Friday 8 November 13
53.
Node Domain Wird ausgeführt
bei: • • Friday 8 November 13 error-Events Exceptions
54.
window.onerror Friday 8 November
13
55.
window.onerror catch it all! Friday
8 November 13
56.
window.onerror window.onerror = function
(msg, url, nr) { ... return true; } Friday 8 November 13
57.
window.onerror window.onerror Code Friday 8 November
13
58.
und jetzt? Friday 8
November 13
59.
und jetzt? Logging FTW! Friday
8 November 13
60.
Logging Client Friday 8 November
13 Server
61.
Logging Client Server ☠☂ ☏☣☢ Friday 8
November 13
62.
Logging Log Message Client ☠☂ ☏☣☢ Friday
8 November 13 Server
63.
Logging Log Message Client ☠☂ ☏☣☢ Friday
8 November 13 Server
64.
Logging window.onerror = function
(msg, url, nr) { $.ajax({ url: ‘/logger’ data: { msg: msg, url: url, nr: nr } }); return true; } Friday 8 November 13
65.
Logging Fire and Forget Friday
8 November 13
66.
Fragen? Friday 8 November
13
67.
Sebastian Springer sebastian.springer@mayflower.de Mayflower GmbH Mannhardtstr.
6 80538 München Deutschland @basti_springer https://github.com/sspringer82 Friday 8 November 13
Jetzt herunterladen