-
393 votesanswersviews
针对已检查异常的案例
多年来,我一直无法得到以下问题的正确答案:为什么一些开发人员如此反对已检查的例外?我有很多对话,在博客上阅读,阅读Bruce Eckel所说的内容(我看到的第一个人反对他们) . 我目前正在编写一些新代码,并非常注意我如何处理异常 . 我试图看到“我们不喜欢检查异常”人群的观点,我仍然看不到它 . 每次谈话都以同样的问题结束,没有答案......让我把它设置起来: 一般来说(从Java的设计方式来... -
239 votesanswersviews
如何从Java 8流中抛出CHECKED异常?
如何从Java 8流/ lambdas中抛出CHECKED异常? 换句话说,我想像这样编译代码: public List<Class> getClasses() throws ClassNotFoundException { List<Class> classes = Stream.of("java.lang.Object&q... -
611 votesanswersviews
Java:已检查vs未经检查的异常说明
我已经在StackOverFlow上阅读了有关已检查和未经检查的异常的多个帖子 . 老实说,我还是不太确定如何正确使用它们 . Joshua Bloch在“Effective Java”中说过 对可恢复条件使用已检查的异常,对编程错误使用运行时异常(第2版中的第58项) 让我们看看我是否正确理解了这一点 . 以下是我对已检查异常的理解: try{ String userInput = ... -
10 votesanswersviews
已检查vs未经检查的异常
我强迫客户端程序员捕获异常或在throws子句中声明它 . 事实上,客户端程序员可能甚至不知道可能抛出异常 . 例如, StringIndexOutOfBoundsException 由String的 charAt() 方法抛出 . 这是什么意思? 根据该代码,不需要在代码中放置try catch块,但我已经看到编译器强制将代码放入try catch块中 . 我很困惑他们到底是什么? -
3 votesanswersviews
IntelliJ:搜索Checked异常,在方法签名中声明,但从不抛入body [关闭]
我在这里有一个相当简单的IntelliJ /工具问题:我目前正在处理一些遗留代码,并开始在这里和那里重做工作 . 我经常偶然发现的是在方法签名中声明(检查)异常,尽管这些异常是在体内抛出的 .这些声明也是由接口或类似的东西强制执行的,因为这个问题主要发生在MVC控制器中,显然总是一遍又一遍地复制和粘贴 .我想知道是否有办法用IntelliJ搜索这些声明的异常 .因为如果我把我的插入符号放在 thr... -
1 votesanswersviews
异常层次结构/ try-multi-catch
try { throw new FileNotFoundException(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } 有人能告诉我为什么编译器不会将第二个catch块... -
33 votesanswersviews
为什么捕获检查的异常允许不抛出异常的代码?
在Java中,抛出 checked 异常(Exception或其子类型 - IOException,InterruptedException等)的方法必须声明 throws 语句: public abstract int read() throws IOException; 不声明 throws 语句 can't 抛出已检查异常的方法 . public int read() { // does... -
16 votesanswersviews
为什么在这种情况下允许抛出检查的异常类型?
我偶然注意到这个 throw 语句(从一些更复杂的代码中提取)编译: void foo() { try { } catch (Throwable t) { throw t; } } 对于一个短暂但快乐的时刻,我认为已经检查过的异常最终决定已经死了,但它仍然很高兴: void foo() { try { } catch (Throwabl... -
1 votesanswersviews
抛出已检查的异常
我在Java中的一些方法会抛出异常,例如NoSuchElementException,IllegalArgumentException等 . 但是在使用这些方法时,这些异常似乎未经检查 . 换句话说,我的方法的调用者不需要对抛出这些异常的方法执行try / catch . 我读到它似乎默认情况下“异常”被“检查”,只有错误是“未选中” . 但不知何故,我抛出的例外情况也未经检查 . 真奇怪 . 我... -
67 votesanswersviews
调用函数时为什么需要“抛出异常”?
class throwseg1 { void show() throws Exception { throw new Exception("my.own.Exception"); } void show2() throws Exception // Why throws is necessary here ? { ...