﻿
{"id":8883,"date":"2018-08-01T09:17:45","date_gmt":"2018-08-01T09:17:45","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=8883"},"modified":"2018-08-01T09:18:06","modified_gmt":"2018-08-01T09:18:06","slug":"express-js-hata-yonetimi","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/express-js-hata-yonetimi\/","title":{"rendered":"Express.js &#8211; Hata Y\u00f6netimi"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bu i\u00e7eri\u011fimizde Express.js&#8217;de genel hata y\u00f6netimi \u00fczerine konu\u015fuyor olaca\u011f\u0131z.<\/p>\n<p>Express.js&#8217;de genel hata y\u00f6netimini sa\u011flayabilmek i\u00e7in hata y\u00f6netimi i\u00e7in \u00f6zel dizayn edilmi\u015f <a href=\"http:\/\/www.gencayyildiz.com\/blog\/express-js-middlewareara-katman-nedir-nasil-kullanilir\/\" rel=\"noopener\" target=\"_blank\">middleware<\/a> kullanmam\u0131z gerekmektedir.<\/p>\n<p>\u00d6rnek olarak a\u015fa\u011f\u0131daki kod blo\u011funu inceleyiniz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst express = require(&quot;express&quot;);\r\nconst app = express();\r\nconst routes = require(&quot;.\/routes&quot;);\r\nconst middleware = require(&quot;.\/middleware&quot;)\r\n\r\napp.use(&quot;\/&quot;, middleware);\r\napp.set(&quot;view engine&quot;, &quot;pug&quot;);\r\napp.use(&quot;\/&quot;, routes);\r\n\/\/------ Error MiddleWare\r\napp.use(&quot;\/&quot;, (error, request, response, next) =&gt; {\r\n    response.status(error.status);\r\n    response.render(&quot;error&quot;, { status: error.status, message: error.message });\r\n});\r\n\/\/------ Error MiddleWare\r\napp.use(express.static(&quot;node_modules&quot;));\r\napp.listen(5000);\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funa bakarsan\u0131z e\u011fer hata ara katman\u0131n\u0131n tan\u0131mland\u0131\u011f\u0131n\u0131 g\u00f6receksiniz. Bu tan\u0131mlanan callback fonksiyonu, tan\u0131mland\u0131\u011f\u0131 &#8220;use&#8221; fonksiyonunun birinci parametresindeki &#8220;\/&#8221; de\u011ferden dolay\u0131 t\u00fcm routelara uygun \u00e7al\u0131\u015facakt\u0131r. Ayr\u0131ca bu callback fonksiyon, al\u0131nan hatayla ilgili bilgi al\u0131nabilmesi i\u00e7in &#8220;error&#8221; parametresi bar\u0131nd\u0131rmaktad\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n.\r\n.\r\n.\r\nrouter.get(&quot;\/&quot;, (request, response, next) =&gt; {\r\n    if (false)\r\n        response.render(&quot;index&quot;, { title: &quot;Anasayfa&quot; });\r\n    else\r\n        next({ status: 404, message: &quot;Beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131.&quot; });\r\n})\r\n.\r\n.\r\n.\r\n<\/pre>\n<p>Tan\u0131mlanm\u0131\u015f routelar aras\u0131ndan herhangi birinde yukar\u0131daki kontrol\u00fc sa\u011flarsak e\u011fer ilgili &#8220;next&#8221; fonksiyonu tetiklendi\u011fi zaman bizim biraz \u00f6nce tan\u0131mlam\u0131\u015f oldu\u011fumuz error middleware&#8217;\u0131m\u0131z tetiklenecektir ve parametre olarak verdi\u011fimiz de\u011fi\u015fkenler ilgili hata katman\u0131ndaki &#8220;error&#8221; parametresi taraf\u0131ndan yakalanacak ve hata bilgisini ta\u015f\u0131yacakt\u0131r. Burada dikkat etmeniz gereken husus, hata kontrol\u00fcn\u00fc sa\u011flayaca\u011f\u0131m\u0131z route yap\u0131lar\u0131na bildi\u011fimiz &#8220;request&#8221; ve &#8220;response&#8221; parametrelerinin yan\u0131nda bir de &#8220;next&#8221; parametresi eklenmi\u015f bulunmaktad\u0131r.<\/p>\n<p>Olas\u0131 bir hata yakaland\u0131\u011f\u0131 esnada render edilecek &#8220;error.pug&#8221; dosyam\u0131z\u0131da a\u015fa\u011f\u0131daki gibi dizayn edersek e\u011fer;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    div(class=&quot;alert alert-primary&quot;, role=&quot;alert&quot;)\r\n        h2(style=&quot;color:red;&quot;)  Hata \r\n            h3 Status : #{status}\r\n            h4 Message : #{message}\r\n<\/pre>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Express.js-Hata-Y\u00f6netimi.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Express.js-Hata-Y\u00f6netimi.png\" alt=\"Express.js - Hata Y\u00f6netimi\" width=\"526\" height=\"182\" class=\"aligncenter size-full wp-image-8886\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Express.js-Hata-Y\u00f6netimi.png 526w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Express.js-Hata-Y\u00f6netimi-300x104.png 300w\" sizes=\"auto, (max-width: 526px) 100vw, 526px\" \/><\/a><br \/>\n\u015feklinde olas\u0131 hatalar\u0131m\u0131z\u0131 kar\u015f\u0131la\u015fmaktay\u0131z.<\/p>\n<p>Sonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Bu i\u00e7eri\u011fimizde Express.js&#8217;de genel hata y\u00f6netimi \u00fczerine konu\u015fuyor olaca\u011f\u0131z. Express.js&#8217;de genel hata y\u00f6netimini sa\u011flayabilmek i\u00e7in hata y\u00f6netimi i\u00e7in \u00f6zel dizayn edilmi\u015f middleware kullanmam\u0131z gerekmektedir. \u00d6rnek olarak a\u015fa\u011f\u0131daki kod blo\u011funu inceleyiniz. const express =&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":8686,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2495,2145],"tags":[2497,2528,1833,2147,2529],"class_list":["post-8883","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-express-js","category-node-js","tag-express-js","tag-express-js-hata-yonetimi","tag-hata-yonetimi","tag-node-js","tag-node-js-hata-yonetimi"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/8883","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=8883"}],"version-history":[{"count":3,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/8883\/revisions"}],"predecessor-version":[{"id":8887,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/8883\/revisions\/8887"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/8686"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=8883"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=8883"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=8883"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}