{"id":32993,"date":"2023-02-03T14:07:55","date_gmt":"2023-02-03T08:37:55","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/"},"modified":"2023-02-03T14:07:55","modified_gmt":"2023-02-03T08:37:55","slug":"solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/","title":{"rendered":"[Solved] Why doesn&#8217;t my C# compiler (Visual Studio) let me do this with a try block?"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-33263627\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"33263627\" data-parentid=\"33263106\" data-score=\"2\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>I&#8217;ll go over your points one by one:<\/p>\n<blockquote>\n<ol>\n<li>Declare long presult; right before the try statement. This makes the<br \/>\n  compiler mad because it wrongly thinks there&#8217;s a possibility of<br \/>\n  returning an unintialized variable.<\/li>\n<\/ol>\n<\/blockquote>\n<p>Actually, the compiler <strong>correctly<\/strong> determines that there is the possibility of returning an uninitialized variable. Since the variable is only set if the function on the right hand side succeeds, and since you have it in a try..catch block then there is the possibility that the function may throw and not return, therefore not initializing the variable. What the compiler is not smart enough to see is that you are catching the top level exception and throwing (in a bad way, losing the stack trace) and it <strong>should<\/strong> not reach the return. However there are ways to get around that (mostly during debug by dragging the execution cursor).<\/p>\n<blockquote>\n<ol start=\"2\">\n<li>Initialize it with long presult = default(long). This works, but<br \/>\n  it&#8217;s bad practice because someone reading the code doesn&#8217;t know<br \/>\n  whether intializing it to the default value is to work around the<br \/>\n  problem described in 1. or is because the value presult because set<br \/>\n  to the default long has some real meaning in the context of the<br \/>\n  program.<\/li>\n<\/ol>\n<\/blockquote>\n<p>Since value types like <code>long<\/code>, <code>int<\/code>, <code>short<\/code> etc <strong>must<\/strong> have a value, this is not bad practice. If you want to represent them as not having a value, use the nullable versions of those types (i.e. <code>long? presult = null<\/code>). <\/p>\n<blockquote>\n<ol start=\"3\">\n<li>Initialize it with long? presult = null. This is semantically better<br \/>\n  because it&#8217;s clear that it means &#8220;presult is meant to have no value<br \/>\n  at this point&#8221; whereas in 2. the reader has to figure out that<br \/>\n  presult has a meaningless value. The problem here is that, not only<br \/>\n  does it take extra memory to nullify a value, but I then have to<br \/>\n  change the function EvalInner to return a long? and this results in<br \/>\n  a chain of needing to change many more longs to long?s and my<br \/>\n  program ends up splattered with nullified variables; it&#8217;s a complete<br \/>\n  mess of question marks haha.<\/li>\n<\/ol>\n<\/blockquote>\n<p>Again, the function <strong>must<\/strong> return a value that is a valid <code>long<\/code>, so if you want to return something that can easily be identified as an incorrect value, then return the nullable version, otherwise you have to return a valid value. Only <code>float<\/code> and <code>double<\/code> have <code>NaN<\/code> members&#8230;<\/p>\n<p><strong>Another option<\/strong> would be some kind of <code>TryXXX<\/code> method, where the return value is a boolean and you use an <code>out long<\/code> as a parameter to store the result.<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\"><\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Why doesn&#8217;t my C# compiler (Visual Studio) let me do this with a try block? <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] I&#8217;ll go over your points one by one: Declare long presult; right before the try statement. This makes the compiler mad because it wrongly thinks there&#8217;s a possibility of returning an unintialized variable. Actually, the compiler correctly determines that there is the possibility of returning an uninitialized variable. Since the variable is only set &#8230; <a title=\"[Solved] Why doesn&#8217;t my C# compiler (Visual Studio) let me do this with a try block?\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/\" aria-label=\"More on [Solved] Why doesn&#8217;t my C# compiler (Visual Studio) let me do this with a try block?\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[324,2100],"class_list":["post-32993","post","type-post","status-publish","format-standard","hentry","category-solved","tag-c","tag-visual-studio-2013"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] Why doesn&#039;t my C# compiler (Visual Studio) let me do this with a try block? - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Why doesn&#039;t my C# compiler (Visual Studio) let me do this with a try block? - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] I&#8217;ll go over your points one by one: Declare long presult; right before the try statement. This makes the compiler mad because it wrongly thinks there&#8217;s a possibility of returning an unintialized variable. Actually, the compiler correctly determines that there is the possibility of returning an uninitialized variable. Since the variable is only set ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-03T08:37:55+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Why doesn&#8217;t my C# compiler (Visual Studio) let me do this with a try block?\",\"datePublished\":\"2023-02-03T08:37:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/\"},\"wordCount\":447,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"c++\",\"visual-studio-2013\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/\",\"name\":\"[Solved] Why doesn't my C# compiler (Visual Studio) let me do this with a try block? - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2023-02-03T08:37:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Why doesn&#8217;t my C# compiler (Visual Studio) let me do this with a try block?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775193939\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775193939\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Why doesn't my C# compiler (Visual Studio) let me do this with a try block? - JassWeb","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:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Why doesn't my C# compiler (Visual Studio) let me do this with a try block? - JassWeb","og_description":"[ad_1] I&#8217;ll go over your points one by one: Declare long presult; right before the try statement. This makes the compiler mad because it wrongly thinks there&#8217;s a possibility of returning an unintialized variable. Actually, the compiler correctly determines that there is the possibility of returning an uninitialized variable. Since the variable is only set ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/","og_site_name":"JassWeb","article_published_time":"2023-02-03T08:37:55+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Why doesn&#8217;t my C# compiler (Visual Studio) let me do this with a try block?","datePublished":"2023-02-03T08:37:55+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/"},"wordCount":447,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++","visual-studio-2013"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/","url":"https:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/","name":"[Solved] Why doesn't my C# compiler (Visual Studio) let me do this with a try block? - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2023-02-03T08:37:55+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-why-doesnt-my-c-compiler-visual-studio-let-me-do-this-with-a-try-block\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Why doesn&#8217;t my C# compiler (Visual Studio) let me do this with a try block?"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775193939","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775193939","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/32993","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=32993"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/32993\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=32993"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=32993"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=32993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}