微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何处理实例化类对象时发生的异常

java version "1.7.0_45"

你好

我正在构造函数中初始化类方法.但是,新URL(uploadUrl)将在构造函数中引发异常.因此,如果发生这种情况,用户应该无法继续.由于构造函数无法返回任何内容,我想知道这是处理此问题的最佳方法吗?

非常感谢任何建议,

public class MultipleFileTransfer {
    private static final String TAG = MultipartUtility.class.getSimpleName();

    private DataOutputStream dataOutputStream;
    private FileInputStream fileInputStream;
    private HttpURLConnection httpURLConnection;
    private URL url;

    public MultipleFileTransfer(final String uploadUrl) {
        dataOutputStream = null;
        fileInputStream = null;
        httpURLConnection = null;

        try {
            url = new URL(uploadUrl);
        } catch (MalformedURLException e) {
            Log.wtf(TAG,e.getMessage()); /* <-- How to handle a failure */
        }
    }

    /* Factory method that initializes the class methods and returns the class object */
    public static MultipleFileTransfer getInstance(final String uploadUrl) {

        /* Check that a valid url has been entered correctly */
        if(!URLUtil.isValidUrl(uploadUrl)) {
            Log.wtf(TAG,"Invalid url: " + uploadUrl);
            return null;
        }

        return new MultipleFileTransfer(uploadUrl);
    }
}

解决方法

As the constructor cannot return anything,I am wondering that is the best way to handle this?

通常,允许异常直接传播给调用者,或者将其包装在您自己的更高级抽象异常中. (在你的情况下,只是让它直接看起来更合适.)

public MultipleFileTransfer(final String uploadUrl) throws MalformedURLException {
// -------------------------------------------------^
    dataOutputStream = null;
    fileInputStream = null;
    httpURLConnection = null;

    url = new URL(uploadUrl);
}

由于您的实例在没有URL的情况下没用,因此构造失败是有意义的.

或者,如果要在构造函数中记录它(但如果它正在传播,通常任何记录,如果适当的话将由调用者处理):

// Logging and re-throwing,but probably not recommended
public MultipleFileTransfer(final String uploadUrl) throws MalformedURLException {
// -------------------------------------------------^
    dataOutputStream = null;
    fileInputStream = null;
    httpURLConnection = null;

    try {
        url = new URL(uploadUrl);
    } catch (MalformedURLException e) {
        Log.wtf(TAG,e.getMessage());
        throw e;                       // <== Rethrowing
    }
}

原文地址:https://www.jb51.cc/java/239789.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐