class Error class Overflow public Error class Underflow
Обработка исключений в С++ class Error {}; class Overflow : public Error {}; class Underflow: public Error {}; class Zero. Divide: public Error { }; try { } catch (Zero. Divide ) { } catch (Overflow ) { } 15. 10. 2021 ВГУЭС 4
Обработка исключений в С++ class Error { public: virtual void print()=0; }; try { class Overflow : public Error { public: virtual void print() { cout << “Overflow”; } }; If(a==0) new Zero. Divide (); If (a > 32765) throw new Overflow(); } catch (Error *e){ e->print(); } /* catch( Overflow &o){ o. print(); } catch( Zero. Divide &o) { o. print(); } */ class Zero. Divide: public Error { public: virtual void print() { cout << “ Zerodivide”; } 15. 10. 2021 ВГУЭС }; 5
Обработка исключений в С++ Лучшим решением class File_ptr { FILE * f; public: File_ptr(char *filename, char * mode) { f=fopen(filename, mode); } ~File_ptr() { fclose(f); } } 15. 10. 2021 ВГУЭС 9
Обработка исключений в Java Спецификация исключений void f (int a) throws IOException, SQLException { } void f () { try {} catch (IOException io) { throw io; } try { } catch (IOException io) { … } // Необязателен catch (SQLException sql) {. . } // Необязателен catch (Exception ex) { … } 15. 10. 2021 ВГУЭС 13
Обработка исключений в Java Примеры void f () throws SQLException, IOException { // отсутсвуют блоки try } void f () { try {. . } catch (IOException io ) { system. out. printlm(io. get. Message()); conn. close(); } catch (SQLException sql) { throw sql; } } 15. 10. 2021 ВГУЭС 14
Пространство имен namespace Space { int get. Num() ; float a; } Int Space: : get. Num() { …} Space: : a=0; using namespace Space; a=10; 15. 10. 2021 ВГУЭС 15
- Slides: 18