Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

One thing you can do in Java is parameterise your interface on the exception type. That way, if the implementation finds it needs to handle some random exception, you can expose that through the interface -- e.g. "class JDBCThingDoer implements ThingDoer<SQLException>". Helper classes and functions can work with the generic type, e.g. "<E> ThingDoer<E> thingDoerLoggingWrapper(ThingDoer<E> impl)".

I think this works really well to keep a codebase with checked exceptions tractable. I've always been surprised that I never saw it used very often. Anyone have any experience using that style?

I guess it's not very relevant any more because checked exceptions are sadly out of fashion everywhere. I haven't done any serious Java for a while so I'm not on top of current trends there.



How do you handle the situation where the code might need to throw (pre-existing) exceptions that don't share a useful base class?


I don’t remember! Possibly that’s one of the cases where it doesn’t work out.

Of course, if you had proper sum types, that situation wouldn’t be a problem.


Java has proper sum types, but what one needs here is union types. They are not the same, sum types are labeled and are disjoint.

You want `MyException | ThirdPartyException` here, though.


You're right, I had it backwards! Thanks for the correction.

Now I'm wondering, could that actually be all that's needed to rescue checked exceptions? Is there any language that has that combination of features?


Back when Java didn't have lambdas, one of the more advanced lambda proposals (http://www.javac.info/closures-v06a.html) had this exact thing for this exact reason.

Unfortunately, this take on lambdas was deemed too complicated, and so we got the present system which doesn't really try to deal with this use case at all.


Well, scala has union types, but it doesn't do checked exceptions per say (but it does have a very advanced type system so similar structure can be easily encoded). I think checked exceptions is pretty rare, so I don't know.. probably some research language (but they often go the extra mile towards effect types)


In a former life I worked with a codebase that used that style. Let's just say it isn't enough.


Can you remember what sort of problems you were hitting?




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: