http://stackoverflow.com/questions/2633834/should-java-try-blocks-be-scoped-as-tightly-as-possible
1.The size of a try
block
makes no difference in performance. Performance is affected by actually raising exceptions at
runtime, and that's independent of the size of the try
block.
2.Keeping try blocks small can lead to better programs.
- small
try
blocks mean that you know more precisely which operation failed, and the higher-level context in which that call was made. This allows you to create more specific error reports.
3.You
might catch exceptions to recover and proceed, or you might catch them
simply to report them to the caller (or to a human, via some UI).
- In the first case, failures from which you can recover are often very specific, and this leads to smaller
try
blocks. - In the second case, where an exception is caught so that it can be wrapped by another exception and re-thrown, or displayed to the user,
4.It might be useful to know what effect a try
block
has on the compiled code. It doesn't change the compiled instructions at all! (Of course, the corresponding catch
block
does, since it's like any other code.)
A try
block
creates an entry in the exception table associated with the method. This table has a range of source instructions counters, an exception type, and a destination instruction. When an exception is raised, this table is examined to see if there is an entry with
a matching type, and a range that includes the instruction that raised the exception. If it does, execution branches to the corresponding destination number.
The important thing to realize is that this table isn't consulted (and has no effect on running performance) unless it's needed. (Neglecting a little overhead in the loading of the class.)