问题标签 [throws]

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 投票
5 回答
3280 浏览

java - Java 中的 throw 关键字

在 Java 中,关键字 (throw) 仅用于抛出您创建的异常。如果没有,有人可以举一个例子说明它是如何在你自己的例外之外使用的。

0 投票
1 回答
4815 浏览

java - 在扩展类上添加“抛出”?

我正在使用 Socket API 制作一个简单的应用程序,但遇到了一个我还没有找到答案的小问题。

该应用程序应该是多线程的,因此 main 方法同时启动服务器和客户端线程。

但是,由于 Socket 类需要抛出一些特定的异常,我也必须这样做:

对于 runServer() 方法也是如此。

并不是说这有什么问题,而是有更优雅的解决方案吗?类似的东西:

0 投票
2 回答
114 浏览

java - 哪些异常需要该方法的 throws 语句?

在 Java 中,有一些类型的异常需要 throws 语句:

而其他人则没有:

throws第一种方法不会在没有语句的情况下编译。

确定Exception/是否Error需要throws声明的标准是什么?

0 投票
3 回答
17391 浏览

java - Python:Java 在 python 中抛出等价物

不是为了比较语言而只是为了知识,

有没有办法throws在 Python 中拥有等效的 java 关键字/功能?

或者我们可以识别静态时间任何方法抛出的检查异常的方式?

或传递(链接)异常处理责任?

爪哇:

Python:

0 投票
1 回答
81 浏览

java - 处理异常的 throws 语句——Java

假设以下代码:

someMethod抛出一个IOException,并且没有其他已检查的异常,并自行处理该异常。

究竟是什么

在它的声明中是带进来的?据我所知,调用someMethod()的方法可以自己处理IOException

这里还有什么事情吗?

0 投票
3 回答
1039 浏览

java - 在派生类中省略 throws 声明

考虑以下接口:

以及以下实现:

请注意,我省略了接口throws IOException中指定的签名部分。Generator然而,没有编译器错误,没有编译器警告,甚至@Override注释都没有抱怨。

我知道这是按预期工作的。但是,我想知道这背后的意图。如果我的方法实际上没有抛出一个IOException,那么不抛出它就可以了,我不必将它从签名中删除。但是,如果我确实将它从我的方法签名中删除EmptyStringGenerator,我将强制该类的所有当前和未来子类放弃抛出接口中实际指定的异常的可能性。

对我来说,这听起来像是一个并没有真正给你带来任何好处的功能(除了节省几次击键,这根本不是一个真正的好处),但在实际使用时有可能成为一个可怕的错误。

所以我的问题实际上是这样的:throws在派生类中省略异常有什么意义?这种可能性解决了什么问题?为什么允许这样做?

更新

对于那些问“但那有什么害处?”的人,这是我的一个评论中的例子。顺便说一句,这并不牵强,因为这正是我现在正在处理的问题:

程序员 A 指定接口 I。程序员 B 编写实现类 X,但忘记添加 throws。他也从来没有注意到,因为这里甚至没有发出警告。程序员 C 写了实现类 Y,继承自类 X,他甚至特意也想把 throws 放在那里,因为他要扔了。但即使界面有规定,现在也不允许他再这样做了,因为B的疏忽。他实际上不再被允许在这里使用该例外。这是一个相当大的伤害。特别是如果 X 类不在您的控制之下。

0 投票
2 回答
281 浏览

java - 列出所有未报告的异常(包括声明异常的超类的异常)

考虑以下场景

使用上面的代码,编译器将警告不捕获(或不声明为抛出)

如果我通过将 g 更改为来解决此问题

然后我不再收到警告(B 被捕获 A 隐含地捕获)

有没有办法让编译器报告所有未捕获的异常,包括基类异常(比如这里的 B)。

一种方法是更改g()​​并将其声明为

在这种情况下,编译器将首先报告 B,一旦我将 B 添加到 的throw规范中g,它将报告 A。

但这很痛苦,因为

  • 这是一个两步过程
  • 我可能无法控制f更改其投掷规格的功能。

有没有更好的方法让编译器报告所有异常?

我并不是说编译器在这里做错了什么——我要问的是——“有没有办法让编译器报告所有异常?”。或者是否有一个工具可以帮助我自动获取这些信息。

该函数f在不同情况下抛出 A & B。如果我是. g_ g_ 有没有办法让编译器检测到这一点并警告我。gthrows Athrows B, A

同样,我并不是说编译器没有警告我这样做是错误的。我要问的是是否有办法让编译器做我想做的事。或者报告这个的工具?

0 投票
2 回答
2079 浏览

java - 为什么不需要捕获 IllegalArgumentException?

我想知道为什么IllegalArgumentException不需要被捕获或声明,而其他异常必须(例如java.net.MalformedURLException)。

我知道Errors 不必声明,因为它们不打算被捕获。

我想声明一个也不需要被捕获的新异常。

0 投票
4 回答
39171 浏览

java - Java 中方法签名中的 Throw 和 Throw 语句之间的区别

我试图弄清楚方法签名中的抛出和Java 中的抛出语句之间的区别。方法签名中的抛出如下:

抛出语句如下:

据我了解,throwsin 方法签名是该方法可能抛出此类异常的通知。throw语句是在相应情况下实际抛出创建的对象。从这个意义上说,如果方法中存在throw语句,则方法签名中的throws应始终出现。

但是,以下代码似乎没有这样做。代码来自图书馆。我的问题是为什么会这样?我理解的概念错了吗?

这段代码是 java.util.linkedList 的副本。@作者乔什·布洛赫

更新答案:

更新1:上面的代码和下面的代码一样吗?

更新 2:检查异常。我需要在签名中有“投掷”吗?是的。

0 投票
3 回答
2983 浏览

java - 从另一个主方法调用变量 - java

我不太了解 Java,我只是想将 url 中的第一行用作项目的字符串。

那么我如何在同一个类中使用变量“输入行”,但在另一种看起来像这样的方法中:

我将不胜感激任何有用的答案。谢谢!