"Shapes library"プログラムのようなものを書いてみたい。с++シェイプライブラリの例外処理
コードを大量に書くのではなく、抽象基底クラスのShapeとLine、Rectangle、Circleなどの派生クラスがいくつかあるとしましょう(私はそれを記述することはあまり重要でないと思います)。
主な機能は次のようなものになることを考慮:私は(形状が画面範囲外にある場合)、コンストラクタにまたは多分移動した後にスローされる可能性がある例外を処理する方法
int main() {
Shape *rect = new Rectangle(Pixel(25, 10), Pixel(33, 15));
Shape *line = new Line(Pixel(1, 12), Pixel(23, 12));
Shape *circle = new Circle(Pixel(37, 12), 2);
refresh_shapes(); // just draw every created shape
cin.get();
rect->rotate_left();
refresh_shapes();
cin.get();
rect->move(45, 12);
refresh_shapes();
cin.get();
line->up(rect); // place the line right above the rect
refresh_shapes();
cin.get();
circle->down();
refresh_shapes();
cin.get();
return 0;
}
?
たとえば、コード全体を1つのtry-catchブロックにラップすると、例外がスローされる前に発生したすべての情報が画面に表示されます。しかし、私は可能な限り「保存」したい。 try-catchブロックのほとんどすべての行を折り返すよりも優れたソリューションがありますか?
ご迷惑をおかけして申し訳ありませんが、それがどのように機能しているか理解したいと思います。
例外的ではないが、オブジェクトを使用する通常の機能として発生することが予想される些細な失敗に対しては、例外をスローしないでください。 – Galik