On Tue, Nov 17, 2009 at 10:33 AM, Jesse Wilson <jessewil...@google.com> wrote: > On Tue, Nov 17, 2009 at 7:56 AM, Tim Ellison <t.p.elli...@gmail.com> wrote: > >> The difference I see, by just staring at the code and without running >> it, is that if the 'thrown' Throwable that was caught earlier is not one >> of the tested types (IOException | RuntimeException | Error) then the >> original code throws an AssertionError, whereas sneaky will re-throw the >> raised type. >> >> Not sure why the original has AssertionError... >> > > Yeah, the repeated "throw" statements in that code obscured my intentions. > > "throw new AssertionError()" is idiomatic for lines of code that should
This idiom is still not well understood, which is why i generally put a comment above any AssertionError throw "// should never happen". That may just be my preventative habit for avoiding questions and confusing looks. I also suspect that the concept of 'assert' in any programming language is not well understood. -Nathan > never ever be executed. In this case, IOException, RuntimeException and > Error were the only things that could have been thrown by the try blocks. >