在KeyNotFoundException Java上的catch块中添加键

时间:2014-10-19 08:28:17

标签: java exception hashmap

有没有办法捕获Java KeyNotFoundException中的HashMap并在catch块中将关键字添加到地图中?

例如,我想在HashMap中为键添加值。如果该密钥不存在,则将抛出KeyNotFoundException

一种替代方法是每次检查密钥是否存在。如果没有,请添加密钥,然后添加值。如果存在,则直接将值添加到密钥。但是,if条件会有很多开销。因此,当抛出此异常时,我可以在catch子句中添加键和值然后继续正确吗?

2 个答案:

答案 0 :(得分:1)

如果密钥不存在,map.put(key,value)只会添加其值。如果密钥存在,map.put(key,value)将覆盖旧值。无论哪种方式,都不会抛出任何异常。你为什么要抛出异常?

如果要在密钥已存在时更改当前值,最好检查密钥是否存在,如果不存在则添加密钥。否则,您仍然需要检查密钥是否存在(使用!map.containsKey(key)map.get(key)==null)以便知道何时抛出异常,并且您仍然必须编写添加密钥的逻辑在catch块中,所以你不会保存任何东西,你的代码只会变得不那么可读。

答案 1 :(得分:1)

你100%误解了这一切。

  

有没有办法捕获Java KeyNotFoundException

中的HashMap

不,因为Java中没有这样的例外。

  

并在catch块中将键添加到地图中?

不,因为你甚至无法编译这样的代码,

  

例如,我想在hashmap中为键添加一个值。如果该密钥不存在,则会抛出KeyNotFoundException

不,它没赢。

  

另一种方法是每次检查密钥是否存在。

Map.containsKey()

  

如果没有,请添加密钥,然后添加值。

     

如果存在,直接将值添加到密钥。但是,if条件会有很多开销。

没有胜利。关键操作HashMap O(1)

  

因此,抛出此异常时,

'此例外'没有被抛出。它甚至不存在。

  

我可以在catch子句中添加键和值然后继续正确吗?

不,因为你无法编译代码。

你的问题建立在错误的前提下。