<div dir="ltr"><div dir="ltr">On Thu, Aug 13, 2020 at 4:38 PM Haoran Xu <<a href="mailto:haoranxu510@gmail.com">haoranxu510@gmail.com</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>I think if a function could throw, then it *should* return an error code in the no-except approach, otherwise there would be no way to convey the error to caller.</div></div></blockquote><div><br></div><div>And here is the rub. What a function *should* do, and what it is required to do by the standard (and therefore what the the compiler can rely on), are very different things.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Am I missing some piece?</div></div></blockquote><div><br></div><div>I think the thing you are missing is what the compiler *actually* knows and can prove, versus what it might know if the code is well structured. (Most code is not well structured.)</div><div><br></div><div>What does the standard say the following function could possibly return? What type will the error be?</div><div><br></div><div><div>void Foo(); </div><div><br></div><div></div></div><div>Now, according to the standard, what exceptions can it throw, and what are the possible types of those exceptions?</div><div><br></div><div>Remember, we are talking about what the compiler can actually prove.</div><div><br></div><div>Anyway, I won't get into this further.</div></div></div>