AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

catch (...)

Ein Thema von MrSpock · begonnen am 29. Mai 2014 · letzter Beitrag vom 29. Mai 2014
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#1

catch (...)

  Alt 29. Mai 2014, 10:11
Delphi-Version: 2010
Hallo,

in der Projektdatei wird folgender Text erzeugt:

Code:
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
   try                                                  
   {
      Application->Initialize();
      SetApplicationMainFormOnTaskBar(Application, true);
      Application->CreateForm(__classid(TfrmABC), &frmABC);
      Application->Run();
   }
   catch (Exception &exception)
   {
      Application->ShowException(&exception);
   }
   catch (...)
   {
      try
      {
         throw Exception("");
      }
      catch (Exception &exception)
      {
         Application->ShowException(&exception);
      }
   }
   return 0;
}
//---------------------------------------------------------------------------
Ich bin dabei über die Zeile catch (...) gestolpert.

Was bedeuten die 3 Punkte .
Albert
Live long and prosper


MrSpock

Geändert von MrSpock (29. Mai 2014 um 15:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: catch (...)

  Alt 29. Mai 2014, 10:19
Wird hier erklärt
Zitat:
If an ellipsis (...) is used as the parameter of catch, that handler will catch any exception no matter what the type of the exception thrown.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: catch (...)

  Alt 29. Mai 2014, 10:22
Sammele alle anderen Exception ein die bisher nicht behandelt wurden.
Wäre bei Delphi Except ohne Typangabe.
Hätte zwar gedacht das auch bei C++ Exception die Basis aller Typen ist, aber bei C++ gibt ja immer überraschungen ...
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#4

AW: catch (...)

  Alt 29. Mai 2014, 10:38
OK, danke. Hab ich mir schon gedacht. Nur wird diese Notation in der C++ Hilfe gar nicht erwähnt. (Ich konnte sie zumindest nicht finden )
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Robotiker
(Gast)

n/a Beiträge
 
#5

AW: catch (...)

  Alt 29. Mai 2014, 15:02
Hätte zwar gedacht das auch bei C++ Exception die Basis aller Typen ist, aber bei C++ gibt ja immer überraschungen ...
Kannst du haben
Zitat:
We can throw an exception of any type that can be copied or moved.
steht im Buch von Stroustrup. Ein
Code:
throw 42;
geht also in Ordnung.

Es gibt allerdings eine Hierarchie vordefinierter Exceptionklassen, die Basisklasse wäre da exception. Exception (großgeschrieben) ist eine C++ Builder Spezialität und eine nur dort parallel existierende Klassenhierarchie.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: catch (...)

  Alt 29. Mai 2014, 15:20
Es gibt allerdings eine Hierarchie vordefinierter Exceptionklassen, die Basisklasse wäre da exception. Exception (großgeschrieben) ist eine C++ Builder Spezialität und eine nur dort parallel existierende Klassenhierarchie.
Dann ist exception die Mutter aller (C++-Standard-)Exceptions und Exception die Mutter als VCL/RTL-Exception
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Robotiker
(Gast)

n/a Beiträge
 
#7

AW: catch (...)

  Alt 29. Mai 2014, 15:31
Ja. Wenn man irgendwelchen Standard-C++ Code verwendet, könnte man vor den catch(...) Block noch einen
Code:
catch(std::exception& e)
{
  // mit e.what() kommt man an den Fehlertext
}
setzen. Je nach Bibliothek, die man verwendet, auch noch was anderes.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#8

AW: catch (...)

  Alt 29. Mai 2014, 15:45
Danke für die Antworten. Noch eine Zusatzfrage zu dem Code im Try - Block.

Woher kennt die Anwendung an dieser Stelle das Objekt "Application" ?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: catch (...)

  Alt 29. Mai 2014, 15:48
Globale Variable in der Forms-Unit
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#10

AW: catch (...)

  Alt 29. Mai 2014, 16:01
Ah ok, und diese kommt indirekt über das include der vcl.h mit rein.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz