I am original Java developer, for me, checked Exception in Java is obviously/easy enough for me to decide to catch or throw it to the caller to handle later. Then it comes P
I'm not a Python dev, but I've done a quite bit of work in C#, which also doesn't have checked exceptions. Being a Java coder that took some getting used to. I personally still think checked exceptions are a nice feature, but opinions differ wildly (as you can see in some of the responses here).
There are quite a few articles online on why checked exceptions are(n't) a good idea (see this blog for one such opinion).
But regardless of your preference: the rule of thumb in Python and C# is to do essentially what you're already doing - test runs and reading the docs.
What I'd typically do in C# is have a 'catch-all' exception handler at the root of my program that makes sure any error is reported and the program exits cleanly, and then deeper in my code have more specific exception handlers for "known specific errors". So actually, not so different from how you'd work in Java, just a little more work to figure out where to put your specific handlers.