问题标签 [unchecked]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3348 浏览

java - Java 异常处理的良好实践

我有一些关于在 Java 中处理异常的问题。我读了一些关于它的内容,并得到了一些相互矛盾的指导方针。

异常处理的最佳实践

让我们看一下上面提到的文章:

它指出,如果“客户端代码无能为力” ,通常应该避免使用检查异常。但这究竟是什么意思?在 GUI 中显示错误消息是冒泡检查异常的充分理由吗?但它会迫使 GUI 程序员记住捕获 RuntimeExceptions 及其后代以显示潜在的错误信息。

本文提出的第二种观点是,除非我想在其中实现一些自定义字段/方法,否则应该避免发明自己的异常类。我通常不同意这一点,我今天的实践正好相反:我将异常包装在我自己的异常结构中,以反映我编写的类实现的目标,即使它们只是扩展 Exception 而不添加任何新方法。我认为它有助于在抛出时在更高层更灵活地处理它们,而且对于将使用这些类的程序员来说,它通常更清晰易懂。

我今天实现了一些代码,文章中介绍的“新方法”在这里和那里抛出 RuntimeException,然后我让Sonar分析它。为了让我更加困惑,Sonar 将我的 RuntimeExceptions 标记为重大错误,并带有一条消息,例如“避免抛出根类型异常,将它们包装在您自己的类型中”。

所以看起来很有争议,你怎么看?

我今天还从一位技术负责人那里听说,仅仅包装异常是不好的,“因为这对 JVM 来说是一项非常昂贵的操作”。对我来说,另一方面,到处抛出 SQLExceptions 或 IOExceptions 看起来有点破坏封装..

那么你对我在这里提出的问题的一般态度是什么?

  1. 什么时候在我自己的类型中包装异常,什么时候我不应该这样做?

  2. '客户端对此无能为力,抛出运行时异常'

  3. 性能问题呢?

0 投票
4 回答
1388 浏览

java - TreeMap 通用参数警告

第 2 行给出了这个错误:

类型安全:TreeMap 类型的表达式需要未经检查的转换才能符合 Map

我找到的解决方案是:如何修复“List 类型的表达式需要未经检查的转换...”?

但是,@SuppressWarnings("unchecked")我的代码是否会失败或者是否存在安全的情况。更一般地说,我们什么时候可以安全地添加@SuppressWarnings("unchecked")?

0 投票
1 回答
177 浏览

forms - 未选中的复选框被发布

我有一个带有复选框的表单:

当我取消选中一个复选框时,它不应该根据http://www.w3schools.com/jsref/prop_checkbox_value.asp发布

0 投票
1 回答
60 浏览

java - 泛型和类转换

我正在尝试生成旧代码,并且有一些代码在给定类似Integer.class的情况下返回Integer.TYPE(反之亦然),以此类推其他包装器(如果输入不是包装器,则返回输入类)。这似乎是转换的候选者(如果它在某处尚不存在)。所以,我有这样的事情:

这段代码的问题在于,编译器本身并不知道在 if 块中我们已经确定了T == Integer,因此不知道返回Integer.TYPE是可以的,因此令人讨厌。当然,我们总是可以显式转换为Class<T>. 问题是,这个演员表是否安全,因此我可以放心添加@SuppressWarnings("unchecked")注释?

0 投票
2 回答
3419 浏览

android - 重置后无法选择先前选择的 RadioButton

我有一组三个 RadioGroups,每个 RadioGroups 由三个 RadioButtons 组成。还有一个重置按钮,将所有组中的所有 RadioButtons 设置为 false (setChecked(false))。

重置工作正常(所有 RadioButtons 都未选中),除了重置后,在每个 RadioGroup 中,只有在单击重置按钮时未选中的两个按钮可以检查。只有在这样做之后,才能像以前一样再次检查组中的所有三个按钮。

我尝试在重置期间添加 setFocusable(true) 和 setClickable(true) 但这并没有什么不同。那么还有什么焦点或可点击性可能导致此问题以及如何解决?

我的目标是 Android API 7。

这是完整的 MainActivity.java:

0 投票
3 回答
363 浏览

java - 使用参数调用通用 Java 函数

以下是可能的吗?

...

显然,这不是类型安全的,因为它假设Foo<?>在这种情况下实际上是一个Foo<String>.

但不是通常的“未经检查”警告,这实际上给了我以下错误:Foo 类型中的方法 bar(capture#1-of ?) 不适用于参数 (String)

通常我可以做一些转换来将此异常转换为我想要的警告,但不知何故我现在找不到一个......

任何想法(除了“不要这样做!”,请)?

编辑:

似乎每个人都想讨论“不要这样做”,所以让我解释一下我试图尽可能优雅地解决的整个问题,然后也许有人有更简洁的方法来做到这一点......

我正在尝试编写一个灵活的事件总线系统,我不需要为每个事件声明十亿个接口类型。

我想要一个EventBus看起来像这样的类:

界面EventHandler如下所示:

这样,我可以简单地编写我的事件处理程序,如下所示:

whereGroupsEvents是描述可能的事件类型的枚举。

然后我注册他们

我可以打电话给他们

在我的代码中,我知道组中的EDIT_BOXES所有源都是类型的TextBox,我不想在我编写的每个处理程序中都用类型转换我的生活。这就是为什么我希望能够在处理程序中实现特定接口,但使用来自 EventBus 的不安全类型转换(我编写一次并永远隐藏)调用它,而不是像这样编写我的所有处理程序:

如果演员阵容错误,程序将会而且应该以任何方式崩溃和烧毁。即使我在处理程序中放置了“instanceof”检查,我也需要以某种方式将其作为错误抛出。我可以优雅地做到这一点,但这并不重要,因为这种情况下的任何错误都是代码中需要修复的错误,而不是一些运行时用户错误,我应该优雅地通知用户。

现在,我已经看到其他库实现了一个完全类型安全的事件系统,但这通常涉及必须为每种可能的事件类型和每种可能的事件处理程序类型声明接口,有时甚至为事件总线本身上的函数声明接口,其中,如果你问我,是不是比它的价值更痛苦。

如果你们中的任何人有一种干净的方式来做我想要实现的目标,我会很兴奋。但我不确定这是否可行。

0 投票
4 回答
2672 浏览

java - Java 泛型 SuppressWarnings("unchecked") 之谜

为什么代码替代(1)编译时没有警告,而代码替代(2)会产生“未经检查的强制转换”警告?

两者的共同点:

备选方案 (1):

备选方案 (2):

备选方案 (2) 产生:

这是:

0 投票
2 回答
173 浏览

java - 奇怪的未经检查的转换警告

我在代码中使用了策略模式,这是一个简短的片段:

我在其他地方做:

和编译器信号:

奇怪的是,如果我这样做,没有警告:

我该如何解决?我试图改变很多,但我仍然收到警告。请帮忙!

0 投票
2 回答
1692 浏览

java - 使用未经检查的异常实现 java 应用程序

可能重复:
Java 未检查/检查异常说明

我一直在阅读有关 Java 中已检查与未检查异常的辩论,我知道其中的区别,但我不完全清楚我们如何选择其中一个。我们真的有任何选择吗?java不是强制我们使用try catch,以防有可能出现检查异常。我们如何仅使用未经检查的异常来实现应用程序,我们如何处理此类应用程序可能出现检查异常的情况。如果有人愿意用一些关于如何将受检异常转换为未受检异常的代码示例为我解决这个问题,那就太棒了:)

0 投票
4 回答
8970 浏览

intellij-idea - IntelliJ 说“警告:java: foo/bar/Baz.java 使用未经检查或不安全的操作”,但它没有说明它指的是哪一行

我收到此警告:

截屏

当我单击图像时,它只会打开关联的编辑器,但不会说出引发警告的行号。我不想添加@SuppressWarning("unchecked")整个班级...

任何解决方法/修复?