finally return の話
某所をみて思い出した finally return の問題。まずは finally return から。
kz> try > throw 123; > finally > return 456; > end > --> 456
例外が食われた。次は finally break を。
kz> try > throw 123; > finally > break TRY; > end:TRY > Exception in thread "main" java.lang.VerifyError: (class: code, method: exec signature: (Lkuzha/KuzhaContext;)Lkuzha/KuzhaObject;) Inconsistent stack height 0 != 1
VerifyError が出てくる。なぜかというと finally の時点でスタックに例外が積まれているが、例外を積んだまま break しているのでスタックの高さが一致しませんでしたよエラーが出てきてしまっている。finally continue でも同じ現象が起きる。