I've been researching Java flow control and exception handling for a while here and have these generally accepted rules:

1. don't use exception handling for flow control
2. avoid checked exceptions unless the client expects to recover (which is a nice way of saying that you're forcing the client to handle the exception so they might as well try to recover from it?)

Along with general rules I try to follow:

1. if doSomething() fails to "do some thing", the caller should be made aware of this
2. methods should be concerned with doing one thing

This makes for a bad mix in some cases. I'm finding that I'm catching checked exceptions within methods and returning boolean everywhere and continually having to check successive calls, making something like this:

```
if(doA()){
  if(doB()){
    if(doC()){ 
      // only here do I know it's good
    }else{
      // I know C failed
    }
  }else{
    // I know B failed
  }
}else{
  // I know A failed
}

```

I'm getting 5-6 nested if-else's deep in some parts and it's pretty ugly. Not to mention managing a bunch of boolean variables to keep track of what worked and what didn't.

Any advice? Would this be a place where 'goto' is acceptable?