长期尝试声明

use*_*342 4 java variables exception try-catch

将大部分代码放入函数中是否有任何缺点try statement?如果我做了什么,需要一个try statement,我通常最终会做很多关于try语句内部的功能工作,因为我通常是在我的声明变量那里,如果我这样做不能使用这些范围之外.这是常见的并被接受吗?人们通常在没有初始化之前声明变量,所以他们没有做任何事情(包括调用其他函数)try statement吗?或者它是否很长并不重要?

Tom*_*icz 5

一种方法应该做一件事并且做得好.在这种情况下,您的方法正在做两件事:业务逻辑和错误处理:

public Foo bar() {
    try {
        //business logic that may throw
        //...
        //end even more
    } catch(BuzzException e) {
        //Error handling
    }
}
Run Code Online (Sandbox Code Playgroud)

我经常发现自己将try块的内容提取到一个单独的方法中而没有错误处理:

public Foo bar() {
    try {
        return unsafeBar();
    } catch(BuzzException e) {
        //Error handling
    }
}

public Foo unsafeBar() throws BuzzException {
    //business logic that may throw
    //...
    //end even more
}
Run Code Online (Sandbox Code Playgroud)