Вы не указали язык, а я языка не знаю, поэтому отвечаю в общем.
Вы не можете этого сделать. Если вы хотите иметь общий код, поместите его либо в finally, либо, если его нужно выполнить только для некоторых ловушек, вы можете скопировать этот код в соответствующие случаи. Если код больше и вы хотите избежать избыточности, вы можете поместить его в отдельную функцию. Если это уменьшит читабельность вашего кода, вы можете вложить свои блоки try/catch (по крайней мере, в Java и C++. Я не знаю о вашем языке). Вот пример на Java:
class ThrowingException {
public static void main(String... args) {
try {
try {
throw new RuntimeException();
} catch(RuntimeException e) {
System.out.println("Hi 1, handling RuntimeException..");
throw e;
} finally {
System.out.println("finally 1");
}
} catch(Exception e) {
System.out.println("Hi 2, handling Exception..");
} finally {
System.out.println("finally 2");
}
}
}
Это распечатает:
Hi 1, handling RuntimeException..
finally 1
Hi 2, handling Exception..
finally 2
поместите свой общий код во внешний блок catch. Выполнение этого с использованием вложенной версии также обрабатывает случаи, когда возникает исключение без явного повторного создания старого в блоке catch. Он может даже лучше соответствовать тому, что вы хотите, а может и нет.
person
Johannes Schaub - litb
schedule
12.12.2008