我正在将TypeScript用于一个相当大的项目,我想知道使用Error
的标准是什么。例如,假设我在Java中处理了一个超出范围的索引:
throw new IndexOutOfBoundsException();
TypeScript中的等效语句是否为:
throw new Error("Index Out of Bounds");
我可以通过其他方式实现这一目标吗?什么是公认的标准?
答案 0 :(得分:139)
Someone posted this link to the MDN in a comment, and I think it was very helpful。它非常彻底地描述了ErrorTypes等内容。
EvalError ---创建一个表示有关全局函数eval()的错误的实例。
InternalError ---创建一个实例,表示抛出JavaScript引擎中的内部错误时发生的错误。例如。 “过多的递归”。
RangeError ---创建一个实例,表示当数字变量或参数超出其有效范围时发生的错误 范围。
ReferenceError ---创建一个实例,表示在取消引用无效引用时发生的错误。
SyntaxError ---创建一个实例,表示在eval()中解析代码时出现的语法错误。
TypeError ---创建一个实例,表示当变量或参数不是有效类型时发生的错误。
URIError ---创建一个实例,表示在encodeURI()或decodeURI()传递无效参数时发生的错误。
答案 1 :(得分:54)
JavaScript中超出范围的约定是使用RangeError
。要检查类型,请使用if / else + instanceof
,从最通用的
try {
throw new RangeError();
}
catch (e){
if(e instanceof RangeError){
console.log('out of range');
}
}
答案 2 :(得分:37)
通过Exception发出和显示消息的简单解决方案。
For Each rowDGV1 As DataGridViewRow In DataGridView1.Rows
For Each rowDGV2 As DataGridViewRow In DataGridView2.Rows
If (rowDGV1.Cells(0).Value = rowDGV2.Cells(0).Value) And
(rowDGV1.Cells(5).Value = rowDGV2.Cells(5).Value) And
(rowDGV1.Cells(6).Value = rowDGV2.Cells(6).Value) Then _
AddRow(rowDGV1.Cells(0).Value, _
rowDGV1.Cells(5).Value, _
rowDGV1.Cells(6).Value)
Next
Next
Private Sub AddRow(ByVal strName as String, ByVal strOne as String, ByVal strTwo as String)
'Add a row into the 3rd dgv with the values presuming you have already added columns in it (for name and difference)
Dim strValue as String = Cdbl(strOne) - Cdbl(strTwo)
dgv3.Rows.Add()
dgv3.Item(dgcName, dgv3.RowCount - 1).Value = strName
dgv3.Item(dgcDifference,dgv3.RowCount - 1) = strValue
dgv3.Item(dgcDGV1Col5,dgv3.RowCount - 1) = strOne
dgv3.Item(dgcDGV1Col6,dgv3.RowCount - 1) = strTwo
dgv3.Item(dgcDGV2Col5,dgv3.RowCount - 1) = strOne
dgv3.Item(dgcDGV2Col6,dgv3.RowCount - 1) = strOne
End Sub
答案 3 :(得分:8)
别忘了switch语句:
default
进行处理。instanceof
可以在超类上匹配。constructor
将在完全相同的类上匹配。
function handleError() {
try {
throw new RangeError();
}
catch (e) {
switch (e.constructor) {
case Error: return console.log('generic');
case RangeError: return console.log('range');
default: return console.log('unknown');
}
}
}
handleError();