Странный код
От: dshe  
Дата: 21.02.05 07:25
Оценка:
Привет,

Зачем пожет понадобится такой код?
    SQLException exception = null;
    try {
        // . . .
    }
    catch(SQLException e) {
        TraceManager.dumpObject(order);
        exception = new SQLException(e.getMessage());
    }
    finally {
        // . . .
    }
    if(null != exception)
        throw exception;

Является ли он workaround'ом какой-то известной проблемы?

PS
Я бы переписал его так:
    try {
        // . . .
    }
    catch(SQLException e) {
        TraceManager.dumpObject(order);
        throw e;
    }
    finally {
        // . . .
    }
--
Дмитро
Re: Странный код
От: CheGa  
Дата: 21.02.05 08:07
Оценка: 8 (1)
Единственный вариант, который пришел в голову:

    SQLException exception = null;
    try {
        // . . .    
        try {
            // . . .
        }
        catch(exception) {
            // . . .
        }
        // . . .
    }
    catch(SQLException e) {
        TraceManager.dumpObject(order);
        exception = new SQLException(e.getMessage());
    }
    finally {
        // . . .
    }
    if(null != exception)
        throw exception;


В любом случае код очень необычный...
winamp играет silent
Заранее спасибо за ответ...
Re: Странный код
От: aefimov Россия
Дата: 21.02.05 08:25
Оценка: 8 (1)
Здравствуйте, dshe, Вы писали:

D>Зачем пожет понадобится такой код?


Мога сделать предположение что это осталось после того, как ктото выполняя запросы коллекционировал Exceptions
И потом выдавал их в виде списка — мол вот тут обломилось в нескольких местах. Но, весьма странно.

D>PS

D>Я бы переписал его так

Праильна! Так его!

Спасибо!
Re: Странный код
От: asebeshuk  
Дата: 21.02.05 08:56
Оценка: 8 (1)
Здравствуйте, dshe, Вы писали:

этот код может использоваться для того, что бы выполнить некоторый функционал, который может быть размещён между
finally и if(null != exception).

т.е. возможно некоторый функционал по определённым причинам нельзя было запихнуть в finally {.




D>Зачем пожет понадобится такой код?

D>
D>    SQLException exception = null;
D>    try {
D>        // . . .
D>    }
D>    catch(SQLException e) {
D>        TraceManager.dumpObject(order);
D>        exception = new SQLException(e.getMessage());
D>    }
D>    finally {
D>        // . . .
D>    }
D>    if(null != exception)
D>        throw exception;
D>

D>Является ли он workaround'ом какой-то известной проблемы?

D>PS

D>Я бы переписал его так:
D>
D>    try {
D>        // . . .
D>    }
D>    catch(SQLException e) {
D>        TraceManager.dumpObject(order);
D>        throw e;
D>    }
D>    finally {
D>        // . . .
D>    }
D>
Re: Странный код
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 21.02.05 09:09
Оценка: 8 (1)
Здравствуйте, dshe, Вы писали:

D>Привет,


D>Зачем пожет понадобится такой код?


Я бы спросил у его автора почему появился такой код. Возможно он просто не понимает семантики конструкции try/catch/finally и где-то встретил конструкции отложенного выброса исключений вот и получилась мешанина. Сам в молодости, когда встречал некий интересный паттерн, пихал его кудаНеПопадь
ICQ #333355130
Re[2]: Странный код
От: dshe  
Дата: 21.02.05 09:26
Оценка:
Здравствуйте, asebeshuk, Вы писали:

A>Здравствуйте, dshe, Вы писали:


A>этот код может использоваться для того, что бы выполнить некоторый функционал, который может быть размещён между

A>finally и if(null != exception).

A>т.е. возможно некоторый функционал по определённым причинам нельзя было запихнуть в finally {.


А какого рода функционал нельзя запихнуть в finally?
--
Дмитро
Re[2]: Странный код
От: dshe  
Дата: 21.02.05 09:32
Оценка:
Здравствуйте, Lucker, Вы писали:

L>Здравствуйте, dshe, Вы писали:


D>>Привет,


D>>Зачем пожет понадобится такой код?


L>Я бы спросил у его автора почему появился такой код. Возможно он просто не понимает семантики конструкции try/catch/finally и где-то встретил конструкции отложенного выброса исключений вот и получилась мешанина.


Я тоже так думаю. К сожалению, непосредственно у автора спросить уже невозможно -- код был написан давно и его автор работает где-то в другом месте.
--
Дмитро
Re[3]: Странный код
От: Аноним  
Дата: 21.02.05 10:31
Оценка:
Здравствуйте, dshe, Вы писали:

чисто гипотетически:

MyException ex;
try{
throw new MyException("point 1");
} catch(MyException e) {
ex = e;
}
finally{
}

try{
throw new MyException("point 2");
} catch(MyException e) {
ex = e;
}
finally{
}

try{
throw new MyException("point 3");
} catch(MyException e) {
ex = e;
}
finally{
}

.......

if(null != ex){
throw ex;
}


т.е. использую такой отложенный throw ex; можно избавится от вложенности и сделать код более линейным.




A>>этот код может использоваться для того, что бы выполнить некоторый функционал, который может быть размещён между

A>>finally и if(null != exception).

A>>т.е. возможно некоторый функционал по определённым причинам нельзя было запихнуть в finally {.


D>А какого рода функционал нельзя запихнуть в finally?
Re[3]: Странный код
От: Other Sam Россия  
Дата: 21.02.05 11:07
Оценка: +1
Здравствуйте, dshe, Вы писали:

D>Здравствуйте, Lucker, Вы писали:


L>>Здравствуйте, dshe, Вы писали:


D>>>Привет,


D>>>Зачем пожет понадобится такой код?


L>>Я бы спросил у его автора почему появился такой код. Возможно он просто не понимает семантики конструкции try/catch/finally и где-то встретил конструкции отложенного выброса исключений вот и получилась мешанина.


D>Я тоже так думаю. К сожалению, непосредственно у автора спросить уже невозможно -- код был написан давно и его автор работает где-то в другом месте.


Сочувствую.
Я однажды видел строку "lnsert" (здесь первая буква меленькая L)! Представьте себе такое в коде... особенно до того момента когда в отладчике дойдете до места
if( myVar.equals( "lnsert" ) )
и получите false...
Re[4]: Странный код
От: Аноним  
Дата: 21.02.05 13:41
Оценка:
Здравствуйте, Other Sam, Вы писали:

OS>Сочувствую.

OS>Я однажды видел строку "lnsert" (здесь первая буква меленькая L)! Представьте себе такое в коде... особенно до того момента когда в отладчике дойдете до места
OS>if( myVar.equals( "lnsert" ) )
OS>и получите false...

Для этого надо использовать спецшрифт для программирования, в котором такие символы различаются.
http://www.tobias-jung.de/seekingprofont/
Re[5]: Странный код
От: Other Sam Россия  
Дата: 22.02.05 05:30
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Здравствуйте, Other Sam, Вы писали:


OS>>Сочувствую.

OS>>Я однажды видел строку "lnsert" (здесь первая буква меленькая L)! Представьте себе такое в коде... особенно до того момента когда в отладчике дойдете до места
OS>>if( myVar.equals( "lnsert" ) )
OS>>и получите false...

А>Для этого надо использовать спецшрифт для программирования, в котором такие символы различаются.

А>http://www.tobias-jung.de/seekingprofont/

Я предпочитаю спец. плеть, спец. дубинку или спец. аплеуху для программистов
Re[4]: Странный код
От: mihhon  
Дата: 22.02.05 07:54
Оценка:
OS>Сочувствую.
OS>Я однажды видел строку "lnsert" (здесь первая буква меленькая L)! Представьте себе такое в коде... особенно до того момента когда в отладчике дойдете до места
OS>if( myVar.equals( "lnsert" ) )
OS>и получите false...
на это checkstyle выдаёт warning
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.