Is “throws Exception” bad practice?

前端 未结 3 1123
后悔当初
后悔当初 2020-12-19 02:02

I\'m reviewing code for a colleague and I encounter a piece of code similar to this:

public X Foo1(Y y) throws Exception {
    X result = new X(y);
    resul         


        
相关标签:
3条回答
  • 2020-12-19 02:22

    This forces everybody using this method to handle thrown Exceptions.

    Even if you like using checked exceptions (which I don't) this leaves you with no information at all what kind of stuff might go wrong. So you can't really handle it in a meaningful way.

    0 讨论(0)
  • 2020-12-19 02:33

    Throws declaration means that: - something inside your method may produce such checked exception - your method is unable or unwilling to deal with it

    You shall use most specific exception, and resist the temptation to group unrelated exceptions to reduce amount of throws declarations. If you feel, that there are too many of them, then your method is overcomplicated and shall be broken into smaller more manageabnle methods

    0 讨论(0)
  • 2020-12-19 02:42

    The throws declaration is part of the method contract. You should always be as precise as possible when defining contracts. Saying throws Exception is therefore a bad idea.

    It's bad for the same reason it is bad practice to say a method returns an Object when it is guaranteed to return a String.

    Furthermore, a caller of the method would necessarily have to catch Exception (unless he want to propagate this ugliness), and catching Exception is also a bad idea. See the answers to this question: Is it a bad practice to catch Throwable?

    0 讨论(0)
提交回复
热议问题