{"id":3004,"date":"2020-07-27T04:31:47","date_gmt":"2020-07-27T04:31:47","guid":{"rendered":"https:\/\/studysection.com\/blog\/?p=3004"},"modified":"2020-07-27T07:15:15","modified_gmt":"2020-07-27T07:15:15","slug":"handling-exceptions-in-mvc-application","status":"publish","type":"post","link":"https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/","title":{"rendered":"Handling exceptions in MVC application"},"content":{"rendered":"<p>Once you have handled all the exceptions using try-catch blocks, we need to decide what needs to be done when an exception is thrown. Logging is one of the best ways to handle these types of errors because one has a trace of what happened in any given section of your code and the error that was thrown. Logging tells you exactly where the bug is located in your code. We still might need to ask the users what they were doing or what input they sent, but most logs can help us identify bugs before users ever detect them.<\/p>\n<p>If you log the bug and then gracefully send users to another page (such as redirecting to an error page), users will always be unaware that an exception was ever thrown.<\/p>\n<h2>Structure of log in PHP (Always follow the following structure while writing any log)<\/h2>\n<p><code><br \/>\ntry{<br \/>\n}<br \/>\ncatch ( Exception $e ) {<br \/>\n   \t\t\t $resultData = print_r ( $e, 1 ); \/\/exception information<br \/>\n$this->writeLog ( \u2018AbcController:: xyz function::after calling \u201cexception function name\u201d:: Exception::\u2019 . $resultData );<br \/>\n}<br \/>\nYou can also log the date and time of the exception<br \/>\ntry{<br \/>\n}<br \/>\ncatch ( Exception $e ) {<br \/>\n$this->writeLog ( \u2018AbcController::  xyz function:: \u201cexception function name\u201d:: response at time :\u2019. date ( \"d-m-Y h:i:sa\" ) . \" is \\r\\n\" . $e );<br \/>\n}<br \/>\n<\/code><\/p>\n<h3>Benefits of logging an exception:<\/h3>\n<ol>\n<li>Developers can trace the issue easily. For eg. Sometimes there may be a case when errors are faced by one user and we can\u2019t access that user\u2019s account on our application. In this case, it will be very time consuming to find the issue by looking into the code, therefore, if an exception has been logged properly then the user can trace the issue easily. <\/li>\n<li>If the exception has been logged properly then it will be easy to fix the issue because the exception will let us know which controller and which method or you can say it will tell us the part of code that caused this exception.<\/li>\n<\/ol>\n<h3>Always take care of following things before logging :<\/h3>\n<ol>\n<li>Your logs should contain descriptive information that helps you identify the cause of an error. Don\u2019t just log \u201cerror\u201d as it will give no idea about the error. Firstly, Log \u201cCritical error in logging class\u201d and then try logging the exception information.<\/li>\n<li>Don\u2019t have an empty catch statement. You should log the information and then either redirect the user or show an appropriate error message.<\/li>\n<li>Always inherit from the Exception class for custom exceptions. We can define our own custom exceptions for specific <a href=\"https:\/\/studysection.com\/blog\/why-go-for-an-online-programming-language-certification\/\">programming<\/a> scenarios. For example, you might want to show a specific error when the number is divided by 5.<\/li>\n<li>Don\u2019t throw errors that are actually not errors. For example, if we fetch some data from the database and no records are returned, then this isn\u2019t an error. An empty record list is not an error. So avoid using try-catch here and just add appropriate empty and non-empty checks in your code.<\/li>\n<\/ol>\n<p><small><em>People having good command over the French language can get a French certification from StudySection. StudySection offers both beginner level and expert level <a href=\"https:\/\/www.studysection.com\/understanding-reading-and-writing-in-french-advanced\">French certification exams<\/a> to test the ability to communicate in the French language.<\/em><\/small><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Once you have handled all the exceptions using try-catch blocks, we need to decide what needs to be done when<\/p>\n","protected":false},"author":1,"featured_media":3006,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[265,287],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>StudySection Blog - Handling exceptions in MVC application<\/title>\n<meta name=\"description\" content=\"Once you have handled all the exceptions using try-catch blocks, we need to decide what needs to be done when an exception is thrown.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"StudySection Blog - Handling exceptions in MVC application\" \/>\n<meta property=\"og:description\" content=\"Once you have handled all the exceptions using try-catch blocks, we need to decide what needs to be done when an exception is thrown.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Posts on famous people, innovations and educational topics\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/studysection\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-27T04:31:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-07-27T07:15:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2020\/07\/MVC.png\" \/>\n\t<meta property=\"og:image:width\" content=\"300\" \/>\n\t<meta property=\"og:image:height\" content=\"200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"admin-studysection-blog\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@studysection\" \/>\n<meta name=\"twitter:site\" content=\"@studysection\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin-studysection-blog\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/\"},\"author\":{\"name\":\"admin-studysection-blog\",\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402\"},\"headline\":\"Handling exceptions in MVC application\",\"datePublished\":\"2020-07-27T04:31:47+00:00\",\"dateModified\":\"2020-07-27T07:15:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/\"},\"wordCount\":467,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/studysection.com\/blog\/#organization\"},\"keywords\":[\"application\",\"MVC\"],\"articleSection\":[\"Learn and Grow\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/\",\"url\":\"https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/\",\"name\":\"StudySection Blog - Handling exceptions in MVC application\",\"isPartOf\":{\"@id\":\"https:\/\/studysection.com\/blog\/#website\"},\"datePublished\":\"2020-07-27T04:31:47+00:00\",\"dateModified\":\"2020-07-27T07:15:15+00:00\",\"description\":\"Once you have handled all the exceptions using try-catch blocks, we need to decide what needs to be done when an exception is thrown.\",\"breadcrumb\":{\"@id\":\"https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/studysection.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Handling exceptions in MVC application\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/studysection.com\/blog\/#website\",\"url\":\"https:\/\/studysection.com\/blog\/\",\"name\":\"Blog Posts on famous people, innovations and educational topics\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/studysection.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/studysection.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/studysection.com\/blog\/#organization\",\"name\":\"StudySection\",\"url\":\"https:\/\/studysection.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2021\/10\/studySection-logo.png\",\"contentUrl\":\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2021\/10\/studySection-logo.png\",\"width\":920,\"height\":440,\"caption\":\"StudySection\"},\"image\":{\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/studysection\",\"https:\/\/twitter.com\/studysection\",\"https:\/\/www.instagram.com\/study.section\/\",\"https:\/\/www.linkedin.com\/company\/studysection\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402\",\"name\":\"admin-studysection-blog\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/054ac87a6874df1932004239cd8eab36?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/054ac87a6874df1932004239cd8eab36?s=96&d=mm&r=g\",\"caption\":\"admin-studysection-blog\"},\"url\":\"https:\/\/studysection.com\/blog\/author\/admin-studysection-blog\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"StudySection Blog - Handling exceptions in MVC application","description":"Once you have handled all the exceptions using try-catch blocks, we need to decide what needs to be done when an exception is thrown.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/","og_locale":"en_US","og_type":"article","og_title":"StudySection Blog - Handling exceptions in MVC application","og_description":"Once you have handled all the exceptions using try-catch blocks, we need to decide what needs to be done when an exception is thrown.","og_url":"https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/","og_site_name":"Blog Posts on famous people, innovations and educational topics","article_publisher":"https:\/\/www.facebook.com\/studysection","article_published_time":"2020-07-27T04:31:47+00:00","article_modified_time":"2020-07-27T07:15:15+00:00","og_image":[{"width":300,"height":200,"url":"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2020\/07\/MVC.png","type":"image\/png"}],"author":"admin-studysection-blog","twitter_card":"summary_large_image","twitter_creator":"@studysection","twitter_site":"@studysection","twitter_misc":{"Written by":"admin-studysection-blog","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/#article","isPartOf":{"@id":"https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/"},"author":{"name":"admin-studysection-blog","@id":"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402"},"headline":"Handling exceptions in MVC application","datePublished":"2020-07-27T04:31:47+00:00","dateModified":"2020-07-27T07:15:15+00:00","mainEntityOfPage":{"@id":"https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/"},"wordCount":467,"commentCount":0,"publisher":{"@id":"https:\/\/studysection.com\/blog\/#organization"},"keywords":["application","MVC"],"articleSection":["Learn and Grow"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/","url":"https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/","name":"StudySection Blog - Handling exceptions in MVC application","isPartOf":{"@id":"https:\/\/studysection.com\/blog\/#website"},"datePublished":"2020-07-27T04:31:47+00:00","dateModified":"2020-07-27T07:15:15+00:00","description":"Once you have handled all the exceptions using try-catch blocks, we need to decide what needs to be done when an exception is thrown.","breadcrumb":{"@id":"https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/studysection.com\/blog\/handling-exceptions-in-mvc-application\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/studysection.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Handling exceptions in MVC application"}]},{"@type":"WebSite","@id":"https:\/\/studysection.com\/blog\/#website","url":"https:\/\/studysection.com\/blog\/","name":"Blog Posts on famous people, innovations and educational topics","description":"","publisher":{"@id":"https:\/\/studysection.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/studysection.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/studysection.com\/blog\/#organization","name":"StudySection","url":"https:\/\/studysection.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/studysection.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2021\/10\/studySection-logo.png","contentUrl":"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2021\/10\/studySection-logo.png","width":920,"height":440,"caption":"StudySection"},"image":{"@id":"https:\/\/studysection.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/studysection","https:\/\/twitter.com\/studysection","https:\/\/www.instagram.com\/study.section\/","https:\/\/www.linkedin.com\/company\/studysection"]},{"@type":"Person","@id":"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402","name":"admin-studysection-blog","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/studysection.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/054ac87a6874df1932004239cd8eab36?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/054ac87a6874df1932004239cd8eab36?s=96&d=mm&r=g","caption":"admin-studysection-blog"},"url":"https:\/\/studysection.com\/blog\/author\/admin-studysection-blog\/"}]}},"views":329,"_links":{"self":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/3004"}],"collection":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/comments?post=3004"}],"version-history":[{"count":3,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/3004\/revisions"}],"predecessor-version":[{"id":3008,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/3004\/revisions\/3008"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/media\/3006"}],"wp:attachment":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/media?parent=3004"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/categories?post=3004"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/tags?post=3004"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}