|
|
|
Передать исключения в вышестоящий метод
|
|||
|---|---|---|---|
|
#18+
Вопрос. допустим есть два класса Main и MyPrivateClass. В MyPrivateClass может возникнуть любое исключение Checked Unchecked Errors. Какие то исключения я могу обработать в MyPrivateClass, а остальные хочу перебросить наверх. Перечитал несколько раз https://docs.oracle.com/javase/tutorial/essential/exceptions/index.html так и не понял ка это сделать. Перехватить любое исключение проблем нет http://www.xyzws.com/javafaq/how-can-i-catch-all-possible-exceptions-in-java/146 Но передать любое исключение наверх неясно. Без блока catсh в MyPrivateClass компилиться отказывается, если внутри вызовы методов классов с определенными исключениями. Определять свои исключения не хочется Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Сергей С ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 20:26 |
|
||
|
Передать исключения в вышестоящий метод
|
|||
|---|---|---|---|
|
#18+
selis76, не понял вопроса - в чем логика какие исключения нужно ловить , какие нет - по классу исключения или оно внутри кетча ещё чего то шаманит. Если по классу то нужно указать какие конкретно экспешны ловятся, если дальше шаманствао идёт то надо перепробрасывать уже пойманые эксепшны ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 20:29 |
|
||
|
Передать исключения в вышестоящий метод
|
|||
|---|---|---|---|
|
#18+
selis76, 1) мжт, для начала стоит усвоить Code Conventions for the Java Programming? 2) MyPrivateClass.Start (); - это что? Вызов нестатического метода как статического? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 20:37 |
|
||
|
Передать исключения в вышестоящий метод
|
|||
|---|---|---|---|
|
#18+
Ну допустим , я хочу обработать деление на 0 а все ошибки связанные с коннектом по JDBC которые CheckedException или Runtime передать наверх. при этом JDBC может выдавать разные виды ошибок, не хочу для каждой чтото прописывать Код: java 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 20:39 |
|
||
|
Передать исключения в вышестоящий метод
|
|||
|---|---|---|---|
|
#18+
selis76, в блоке catch проверить принадлежность исключения к дереву наследования от java.sql.SQLException. Если условие выполняется, то выбрасывать новое исключение из этого блока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 20:42 |
|
||
|
Передать исключения в вышестоящий метод
|
|||
|---|---|---|---|
|
#18+
skywriterselis76, в блоке catch проверить принадлежность исключения к дереву наследования от java.sql.SQLException. Если условие выполняется, то выбрасывать новое исключение из этого блока. Так вот новое исключение придется определять самому? А мне хотелось передать его вверх "как есть", или это невозможно из за областей видимости? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 20:44 |
|
||
|
Передать исключения в вышестоящий метод
|
|||
|---|---|---|---|
|
#18+
selis76, тут написано, что оператор throw может принимать в качестве выражения переменную ссылочного типа. Но в случае выброса SQLException придётся декларировать типа исключения в сигнатуре метода (throws). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 21:01 |
|
||
|
Передать исключения в вышестоящий метод
|
|||
|---|---|---|---|
|
#18+
selis76skywriterselis76, в блоке catch проверить принадлежность исключения к дереву наследования от java.sql.SQLException. Если условие выполняется, то выбрасывать новое исключение из этого блока. Так вот новое исключение придется определять самому? А мне хотелось передать его вверх "как есть", или это невозможно из за областей видимости? Нет... На вашем коде, пример, пишу не в редакторе, но смысл наверно понятен Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. теперь везде где будете использовать например myMethod, будете обрабатывать SqlException, IOException, MyException ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 09:14 |
|
||
|
Передать исключения в вышестоящий метод
|
|||
|---|---|---|---|
|
#18+
selis76Ну допустим , я хочу обработать деление на 0 а все ошибки связанные с коннектом по JDBC которые CheckedException или Runtime передать наверх. при этом JDBC может выдавать разные виды ошибок, не хочу для каждой чтото прописывать Ну так и отлавливайте только ошибки арифметики Код: java 1. 2. 3. 4. 5. Если нужно обработать ряд исключений различными способами то нужно двигаться с нижних уровней иерархии. Код: java 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 09:25 |
|
||
|
Передать исключения в вышестоящий метод
|
|||
|---|---|---|---|
|
#18+
golovonometrselis76пропущено... Так вот новое исключение придется определять самому? А мне хотелось передать его вверх "как есть", или это невозможно из за областей видимости? Нет... На вашем коде, пример, пишу не в редакторе, но смысл наверно понятен Код: java 1. 2. теперь везде где будете использовать например myMethod, будете обрабатывать SqlException, IOException, MyException Спасибо помогло, понял . Но возник еще вопрос Как мне получить полную цепочку методов из которых вызвалось исключение. Например в MyPrivateClass.Start произошла ошибка. Я их в Start не разбираю а сразу перебрасываю наверх. В верхнем блоке try может быть длинный программный код. Как мне определить что исключение произошло именно в Start ? Номер строки в классе Main и так покажет. А меня интересует название метода где произошло исключение. Желательно как цепочка. getconnection-Start - > Main А цепочки могут быть длиннее. Стек такой информации не дает Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 14:31 |
|
||
|
Передать исключения в вышестоящий метод
|
|||
|---|---|---|---|
|
#18+
selis76Как мне получить полную цепочку методов из которых вызвалось исключение. Логгирование? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 15:21 |
|
||
|
Передать исключения в вышестоящий метод
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. + getSuppressed ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 16:02 |
|
||
|
Передать исключения в вышестоящий метод
|
|||
|---|---|---|---|
|
#18+
skywriterselis76Как мне получить полную цепочку методов из которых вызвалось исключение. Логгирование? Да. Хочется чтобы при возникновении ошибки было понятно в каком методе она произошла и по какой цепочке исключение пошло вверх. Я конечно могу анализировать в каждом методе свои переменные для определения факта исключения, которое передали наверх. Однако возможно есть чтото готовое в Java ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 18:31 |
|
||
|
Передать исключения в вышестоящий метод
|
|||
|---|---|---|---|
|
#18+
Atum1 Код: java 1. 2. 3. 4. 5. 6. 7. + getSuppressed getSupressed выдает вот такое [Ljava.lang.Throwable;@379589 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 18:32 |
|
||
|
Передать исключения в вышестоящий метод
|
|||
|---|---|---|---|
|
#18+
selis76Я конечно могу анализировать в каждом методе свои переменные для определения факта исключения, которое передали наверх. Однако возможно есть чтото готовое в JavaВам же сказали - обработайте только то, что хотите обработать и ничего не делайте для всего остального: Код: sql 1. 2. 3. 4. 5. И всё - деление на ноль мы перехватили и обработали, а SQLException вылетит наружу без всякого участия с нашей стороны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 18:49 |
|
||
|
Передать исключения в вышестоящий метод
|
|||
|---|---|---|---|
|
#18+
selis76skywriterпропущено... Логгирование? Да. Хочется чтобы при возникновении ошибки было понятно в каком методе она произошла и по какой цепочке исключение пошло вверх. Это был наводящий вопрос. Чем не устраивает вывод в лог в обработчике каждого исключения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 18:51 |
|
||
|
Передать исключения в вышестоящий метод
|
|||
|---|---|---|---|
|
#18+
skywriterЧем не устраивает вывод в лог в обработчике каждого исключения? Н-р, так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 18:57 |
|
||
|
Передать исключения в вышестоящий метод
|
|||
|---|---|---|---|
|
#18+
skywriterskywriterЧем не устраивает вывод в лог в обработчике каждого исключения? Н-р, так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Да в принципе можно и так, просто по факту catch это и так обработка исключения и передать наверх значит по сути вызвать заново через throw e; я думал в Java можно в обработчике исключения (который выше) понять как оно шло наверх ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 19:07 |
|
||
|
Передать исключения в вышестоящий метод
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovselis76Я конечно могу анализировать в каждом методе свои переменные для определения факта исключения, которое передали наверх. Однако возможно есть чтото готовое в JavaВам же сказали - обработайте только то, что хотите обработать и ничего не делайте для всего остального: Код: sql 1. 2. 3. 4. 5. И всё - деление на ноль мы перехватили и обработали, а SQLException вылетит наружу без всякого участия с нашей стороны. с этим уже разобрался. Сейчас осуждается вопрос логгирования прохождения исключения наверх ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 19:09 |
|
||
|
Передать исключения в вышестоящий метод
|
|||
|---|---|---|---|
|
#18+
selis76Сейчас осуждается вопрос логгирования прохождения исключения наверхА этим занимается JVM, печатая трассу стека. Если вы не хотите трассы на десятки килобайт - делайте протоколирование. Только это отдельная задача. P.S. Берите пример с (исчезнувших) радиокомментаторов: люди умели рассказывать о динамичной игре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 19:14 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39192919&tid=2124268]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 231ms |
| total: | 392ms |

| 0 / 0 |
