При работе с С# или Java я использовал для создания классов исключений, которые включали другие исключения в члены класса. Например:
public class MyException : Exception {
private MyException ex;
private String message;
public String what() {
return this.message;
}
public String stack() {
if(ex != null) {
StringBuilder s;
s.append(this.what());
s.append(this.ex.stack());
return s.toString();
}
return this.what();
}
}
Я искал примеры по одному и тому же вопросу, но для С++ и я не мог найти их (возможно, я не искал правильные условия, так как вы можете видеть, что заголовок этого вопроса не очень причудливый).
В любом случае, каков правильный способ сделать это на С++? Хранить ли внутреннее исключение как указатель или ссылку? (Я думаю, мне может понадобиться указатель, поэтому он может быть пустым, когда это первое исключение). Когда я создаю исключение, должен ли он быть указателем, созданным с помощью new
?
EDIT: Возможно, то, что я написал, было немного запутанной или не известной (-принятой) практикой программирования. Поэтому я укажу, как я хотел использовать этот класс со сниппетом:
try {
// Code that throws an exception of type MyException
} catch(MyException ex) {
MyException another = new MyException();
another.setEx(ex);
another.setMessage("A message that explains where the other exception was caught and on what conditions");
throw another;
}