Che cosa significa questo codice C ++: “vuoto Foo) throw (;”?
Domanda
Domanda da quella intervista.
Si prega di spiegare che cosa fa questo codice C ++ media:
void Foo() throw;
Soluzione
void Foo() throw;
Questa è una Errore di sintassi . La grammatica per la specifica eccezione (C ++ 98 §15.4) è:
specifica delle eccezioni:
throw
(
tipo-id-list opt)
Si noti che le parentesi sono obbligatori.
D'altra parte,
void Foo() throw();
significa che la funzione Foo()
non buttare eccezioni.
Altri suggerimenti
void Foo() throw;
è mal-formata.
Invece mezzi void Foo() throw();
che la funzione 'Foo' è dichiarata in modo tale che non genera alcuna eccezione
$ 15.4 / 10 - "funzione A senza specifica delle eccezioni permette a tutti eccezioni. Una funzione con un vuoto exceptionspecification, throw (), lo fa Non consentire eccezioni ".
in un'intervista, questa domanda offre una buona occasione per parlare di verifica un'eccezione; le differenze tra C ++ e Java; le preferenze personali e opinioni; un momento in cui la verifica un'eccezione ha danneggiato o aiutato, ecc E 'il tipo di domanda che non è tanto sulla letteralmente risposta corretta frase singolo che indica la regola della sintassi, ma più su un invito a parlare del modo in cui si programma e pensare. Potrebbe essere pericoloso se si fa finta di sapere più di te, o se la filosofia è molto diversa dalla loro.
Questo significa lo sviluppatore non usa significativo i nomi di funzione ...