Używam TypeScript do rozsądnie dużego projektu i zastanawiam się, jaki jest standard używania Error
s. Na przykład, powiedzmy, że podaję wyjątek indeksu poza granicami w Javie:
throw new IndexOutOfBoundsException();
Czy odpowiednikiem instrukcji w TypeScript byłoby:
throw new Error("Index Out of Bounds");
Jakie inne sposoby mogę to osiągnąć? Jaki jest przyjęty standard?
źródło
RangeError
. Należy zdefiniować typy niestandardowe, czy po prostuthrow new Error("<message>");
?Konwencja poza zakresem w JavaScript używa
RangeError
. Aby sprawdzić typ, użyj if / else +,instanceof
zaczynając od najbardziej specyficznego do najbardziej ogólnegoźródło
else { throw; }
tutajProste rozwiązanie do emitowania i wyświetlania wiadomości według wyjątku.
Uwaga
Powyższe nie jest rozwiązaniem, jeśli nie wiemy, jaki rodzaj błędu można wyemitować z bloku. W takich przypadkach należy stosować osłony typu i odpowiednio obchodzić się z błędami - spójrz na odpowiedź @Moriarty.
źródło
<Error>
jest poinformowanie kompilatora TS, żee
jest to typ<Error>
, abyś miał (1) intelisense i (2) lepsze sprawdzanie typów. Pamiętaj jednak, że każdy rzut w ogóle nie przekłada się na JS i jest czysto syntaktycznym cukrem.Nie zapomnij o instrukcjach switch:
default
.instanceof
może się równać w superklasie.constructor
będzie pasować dokładnie w tej klasie.źródło