Scala 子字符串正确抛出 IndexOutOfBounds 但不在 Scala.js 中
Scala substring correctly throws IndexOutOfBounds but does not in Scala.js
在 Scala REPL 中,当在太短的字符串上调用子字符串而无法剪切时,它会按预期抛出索引越界:
scala> "123".substring(0,6)
java.lang.StringIndexOutOfBoundsException: String index out of range: 6
at java.lang.String.substring(String.java:1963)
... 32 elided
但是运行上面的Scala.js没有抛出异常:
"123".substring(0,6)
// returns "123"
为什么会这样?
这是维护者对 an almost identical question 的回答:
That said, no, we won't make consistent, because StringIndexOutOfBounds
is undefined behavior in Scala.js.
您可以检查 the documentation of the semantics of Scala.js 来确认这个说法,但是 substring
这个具体案例之前让我感到困惑,应该在该页面上更具体地指出。
在 Scala REPL 中,当在太短的字符串上调用子字符串而无法剪切时,它会按预期抛出索引越界:
scala> "123".substring(0,6)
java.lang.StringIndexOutOfBoundsException: String index out of range: 6
at java.lang.String.substring(String.java:1963)
... 32 elided
但是运行上面的Scala.js没有抛出异常:
"123".substring(0,6)
// returns "123"
为什么会这样?
这是维护者对 an almost identical question 的回答:
That said, no, we won't make consistent, because
StringIndexOutOfBounds
is undefined behavior in Scala.js.
您可以检查 the documentation of the semantics of Scala.js 来确认这个说法,但是 substring
这个具体案例之前让我感到困惑,应该在该页面上更具体地指出。