2013-06-26 20 views
11

Perché ci sono errori ed eccezioni in Dart e non errori o eccezioni?Errore vs eccezione nel Dardo

La ragione è storica o meglio?

Posso lanciare un errore, posso lanciare un'eccezione. Nessuno di loro viene controllato dal Analyzer come in Java (Exception vs. RuntimeException)

risposta

20

Da this post, citando Bob Nystrom:

errore e le sue sottoclassi sono per gli errori programmatici. Se si verifica uno di quelli , il tuo codice non funziona correttamente e dovresti correggere il tuo codice.

Le classi di eccezione non errore sono per errori di runtime. A volte è possibile impedire a di essere lanciati, ma spesso non è possibile.

Tranne in alcune circostanze particolari, Dart idiomatico dovrebbe generare errori , ma non prenderli mai. Esiste in particolare per non essere catturato in modo da rimuovere l'app e avvisare il programmatore nella posizione del bug.

In altre parole, è necessario prevedere (e verificare) le eccezioni (è previsto che sia necessario gestirle). Se si verifica un errore, è necessario verificare in che modo si sta utilizzando l'API che genera l'errore, probabilmente lo si sta utilizzando in modo errato.

Se si sta scrivendo un'API, è necessario utilizzare lo stesso modello. Gli errori sono messaggi agli sviluppatori a valle su come stanno usando la tua API.

+2

Thx Chris per il chiarimento! Penso che questo sia mancante nella documentazione. C'è già un problema a questo proposito: https://code.google.com/p/dart/issues/detail?id=9377 –