在Scala 2.7中的一个case语句中匹配(和绑定)两个异常类?
发布时间:2020-12-16 09:22:07 所属栏目:安全 来源:网络整理
导读:我有以下代码: try { ... some JSON parsing code .. } catch { case e:ClassCastException = throw new ParseException(body,e) case e:JSONException = throw new ParseException(body,e)} 这似乎过于重复.我试过了 case e:ClassCastException | e:JSONEx
我有以下代码:
try { < ... some JSON parsing code .. > } catch { case e:ClassCastException => throw new ParseException(body,e) case e:JSONException => throw new ParseException(body,e) } 这似乎过于重复.我试过了 case e:ClassCastException | e:JSONException => throw new ParseException(body,e) 但Scala不会让我绑定到这两种类型 – 足够公平.在处理程序中,我只需要处理e,就像它是Exception类型一样,但是如果它是其中一个特定的类,我只想首先匹配.像匹配类型之类的条件一样,像: case e:Exception(ClassCastException|JSONException) => throw new ParseException(body,e) 这显然不是正确的语法,但希望你看到我的意思.这样的事情可能吗? 解决方法
您不能在Pattern Alternatives(PatternA | PatternB)中引入绑定.但是您可以使用图案绑定器(name @ Pattern)将名称绑定到Pattern Alternatives的结果.
try { < ... some JSON parsing code .. > } catch { case e @ (_: ClassCastException | _: JSONException) => throw new ParseException(body,e) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容