Как обрабатывать исключения при передаче свойств обратно от одного метода к другому

У меня есть метод getMyProperties (), который извлекает и возвращает различные файлы свойств и обрабатывает исключение там. Однако Eclipse говорит, что другой метод getRequest (), который вызывает getMyProperties (), также должен иметь «throws IOException». Даже тогда, после добавления этого, Eclipse говорит, что основной метод, который вызывает getRequest (), должен также генерировать исключение. Это правильный способ обработки исключений? Что-то в этом кажется неправильным.

После выполнения того, что предлагает Eclipse, у меня в основном методе есть следующее. Не показывает ошибок, но верно ли это?

public static void main(String[] args) throws IOException {
        //some code...
        myRequest = TestApiCall.getRequest(type, sQuery);
        //some more code...     
    }

Вот методы в отдельном классе ...

static String getRequest(String rType, String query) throws IOException{
        Properties myProps = null;
        String request = "";
        switch (rType){
            case "XML-SBQ":
                request = CallConsts.XML_SBQ_CALL;
                myProps = getMyProperties("configSBQ.properties");
                //use the properties
                break;
            case "JSON-SBQ":
                request = CallConsts.JSON_SBQ_CALL;
                //use the properties
                break;
            case "JSON-gos":
                request = CallConsts.JSON_GOS_CALL;
                myProps = getMyProperties("configGOS.properties");
                //use the properties
        }
        return request;
    }

    static Properties getMyProperties(String propName) throws IOException{
        Properties prop = new Properties();
        InputStream inputStream = null;

        try {
            String propFileName = propName;

            inputStream = TestApiCall.class.getClassLoader().getResourceAsStream(propFileName);

            if (inputStream != null) {
                prop.load(inputStream);
            } else {
                throw new FileNotFoundException("property file '" + propFileName + "' not found in the classpath");
            }
        } catch (Exception e) {
            System.out.println("Exception: " + e);
        } finally {
            inputStream.close();
        }
        return prop;

    }

Вот метод после изменений, предложенный Джоселин и Васкесом. Надеюсь, выглядит намного лучше!

static Properties getMyProperties(String propName) {
    Properties prop = new Properties();
    String propFileName = propName;

    try (InputStream inputStream = TestApiCall.class.getClassLoader().getResourceAsStream(propFileName)){

        if (inputStream != null) {
            prop.load(inputStream);
        } else {
            throw new FileNotFoundException("property file '" + propFileName + "' not found in the classpath");
        }
    } catch (IOException e) {
        System.out.println("Exception: " + e);
    } 
    return prop;
}

Всего 1 ответ


getMyProperties(String propName) не должен генерировать IOException поскольку вы getMyProperties(String propName) здесь Exception . Следовательно, getRequest() не нужно объявлять, и ваша проблема решена.

Тем не менее, я советую вам никогда не перехватывать Exception в целом, вам нужно только перехватывать здесь IOException и FileNotFoundException .


Есть идеи?

10000