Ném ra các loại ngoại lệ khác nhau trong JavaScript
Hãy ném ra một ngoại lệ của riêng chúng ta và xem, đối tượng lỗi sẽ hoạt động như thế nào trong trường hợp này:
try {
throw new Error('nội dung ngoại lệ');
} catch (error) {
console.log(error.name); // 'Error'
console.log(error.message); // 'nội dung ngoại lệ'
}
Như bạn thấy, loại ngoại lệ của chúng ta là 'Error'.
Bất kỳ ngoại lệ nào được ném ra theo cách tương tự cũng sẽ có
cùng loại. Tuy nhiên, điều này không phải lúc nào
cũng thuận tiện, bởi vì nếu chúng ta có thể có
nhiều ngoại lệ, chúng ta sẽ không thể phân biệt chúng
với nhau.
JavaScript có giải pháp cho vấn đề này:
có thể ném ra các ngoại lệ không chỉ thuộc loại
Error, mà còn thuộc bất kỳ loại lỗi tích hợp sẵn nào trong JavaScript,
ví dụ: TypeError,
SyntaxError, RangeError.
Hãy ném ra một ngoại lệ loại
SyntaxError để làm ví dụ:
try {
throw new SyntaxError('nội dung ngoại lệ');
} catch (error) {
console.log(error.name); // 'SyntaxError'
console.log(error.message); // 'nội dung ngoại lệ'
}
Hãy ném ra một ngoại lệ với loại TypeError.
Ném ra các ngoại lệ với loại SyntaxError
và RangeError. Bắt các ngoại lệ này
bằng một khối try duy nhất. Trong khối catch,
hãy in ra các thông báo lỗi khác nhau cho các ngoại lệ
thuộc các loại khác nhau.