- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个关于 Java 方法内省(introspection)的问题,特别是关于异常的问题。假设我有以下代码:
private String getCustomReportResponse(HttpsURLConnection customReportConnection) {
int responseCode = 0;
try {
responseCode = customReportConnection.getResponseCode();
return httpResponseBodyExtractor.extractResponseBodyFrom(customReportConnection);
} catch (IOException e) {
translateIntoRelevantException(responseCode, e);
}
}
假设 try block 中的两个语句都能够抛出 IOException - 在这种情况下,将调用 translateIntoRelevantException
方法,如下所示:
private void translateIntoRelevantException(int responseCode, IOException e) {
if(is5xxResponseCode(responseCode)) {
throw new ServerResponseException("Could not generate report - returned response code " + responseCode, e);
}
throw new ReportException("GeminiReportException: Unable to parse response from HTTP body when requesting custom Gemini report.", e);
}
因此,无论发生什么,要么返回一个字符串,要么抛出异常。除了 getCustomReportResponse 方法如果不在 catch block 后面添加 return 语句就无法编译,这是绝对无法访问的。事实上,如果我将 translateIntoRelevantException
的内容放入 catch block 中,它就会编译,这对我来说似乎很愚蠢。
我应该补充一点,抛出的异常是运行时异常,但我也尝试过将它们设置为检查异常,但问题仍然存在。
有人可以解释一下为什么吗?
最佳答案
这是一个common problem “重新抛出”辅助方法所面对的。
编译器不知道(也没有办法表明)方法 translateIntoRelevantException
永远不会返回。
因此,它认为有一个代码路径在 try
block 之后继续。因此,您必须输入“死代码”return null
(或抛出新的 RuntimeException("should never come here")
。
您不必将其放在 try
block 之后,您可以将其放在 catch
内。
try {
responseCode = customReportConnection.getResponseCode();
return httpResponseBodyExtractor.extractResponseBodyFrom(customReportConnection);
} catch (IOException e) {
translateIntoRelevantException(responseCode, e);
throw new RuntimeException("should never come here");
}
让助手只返回
异常而不是抛出异常可能会更漂亮。然后你就可以做
throw translateIntoRelevantException(responseCode, e);
关于Java异常抛出内省(introspection),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42001896/
有没有办法自省(introspection)变量以直接找出它声明的子集?在这里,我创建了一个子集,但自省(introspection)将我指向它的基本类型: > subset Prime of Int
我正在尝试使用泛型动态创建一个基于 class 实例的类型,但是我在类自省(introspection)方面遇到了困难。 问题如下: 是否有与 Obj-C 的 self.class 等效的 Swift
首先,一些上下文:我是一名 Python 开发人员,他使用 PyGObject 编写了一个中型应用程序,利用 GObject Introspection 来访问 GSettings 等内容。我的一些
当 API 使用 Introspection 进行 HTTP token 身份验证时,如果 Introspection 服务器关闭或返回 500,它应该返回什么? 我正在编写 API 并希望遵守 Ht
调用子例程 Capture 后访问它的语法是什么? self仅适用于对象和 &?ROUTINE 指的是静态例程,而不是其一旦被调用的状态。那么首先,是否可以访问例程的 Capture从内部?如果是这样
我有一个关于 Java 方法内省(introspection)的问题,特别是关于异常的问题。假设我有以下代码: private String getCustomReportResponse(Https
给定 D 中的函数声明,是否可以在编译时内省(introspection)任何函数参数名称的字符串表示形式,以用于自动函数反射。 例如。 void foo(int a, double b, strin
在 Julia 中,有没有办法获取传递给函数的名称? x = 10 function myfunc(a) # do something here end assert(myfunc(x) == "x"
D语言有没有类似lint之类的东西,或者有没有什么框架可以快速搭建检查器? 编辑 1 回想起来,我记得一周前我看过工具 DScanner。该工具只能返回类名和一些其他内容,但它包含完整的 Lexer
是否有一些自省(introspection)方法允许可靠地获取对象实例的底层数据结构,不受任何自定义的影响? 在 Python 3 中,对象的低级实现可能会被深深地掩盖:可以自定义属性查找,甚至可以自
我正在草拟一些东西的设计(函数的机器学习),它最好需要一种函数式编程语言,还有内省(introspection),特别是能够以某种易于处理的格式检查程序自己的代码的能力,最好还有获得机器的能力生成在运
我有一个由 apollo-server 提供支持的 node.js 项目。我使用自定义@admin对查询、突变和对象字段进行权限检查的指令。对于查询和突变,该指令会引发错误,对于字段,它返回 null
我正在尝试通过 Object 对象的名称 memberName 访问其属性。 我尝试过: new PropertyDescriptor(memberName,object.getClass()).ge
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我正在为以下相当微不足道的问题寻找 OOP 设计建议。我想避免在不采用访问者模式的情况下使用类型自省(introspection)(例如 Java instanceof 运算符),这是典型的建议。我目
一段时间以来,我一直在尝试解决这个问题,到目前为止,每个人都告诉我这在我身边是不可能的,所以我想尝试一下。 这就是问题所在:人们使用环境变量,但没有正确地测试结果或默默地使用硬编码替代方案。 我想做的
大家好, 我目前正在开发一个 python 模块,为同事提供使用工具,我试图提供的一些功能可以返回相当多的有用信息(比如 5 个返回值),但在大多数用例中,只需要前两个。 我知道 python 非常适
我正在玩自省(introspection),想在运行时提取参数计数和参数名称。是否有可能实现这样的东西? class Greeter def self.greet(name, weekday =
假设我有一个从类方法中调用的自由函数。有没有办法让我在自由函数中反省调用堆栈并确定调用我的对象? def foo(arg1) : s = ? #Introspect call stack and
我希望有人可以帮助我解决以下问题: 我对 java 堆栈自省(introspection)的理解(这里可能有点过于简单化)是一个进程生成一个堆栈帧,然后将其添加到堆栈中。现在,当进程需要进行系统调用时
我是一名优秀的程序员,十分优秀!