问题标签 [throwable]

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 投票
6 回答
1305 浏览

java - 将 Throwable 用于除异常之外的事物

我总是在错误的上下文中看到 Throwable/Exception。但是我可以想到一些情况,扩展 aThrowable只是为了摆脱一堆递归方法调用会非常好。例如,假设您试图通过递归搜索的方式在树中查找并返回某个对象。一旦你发现它把它粘在某个地方Carrier extends Throwable并扔掉它,然后在调用递归方法的方法中捕获它。

肯定的:你不必担心递归调用的返回逻辑;既然你找到了你需要的东西,为什么还要担心如何将该引用备份到方法堆栈中。

否定:您有一个不需要的堆栈跟踪。该try/catch块也变得违反直觉。

这是一个非常简单的用法:

问题是,有没有更好的方法来实现同样的目标?此外,以这种方式做事有什么本质上的坏处吗?

0 投票
4 回答
2239 浏览

java - 关于 java Throwable

当我开发 android 应用程序时,我想制作一个 CrashReport 类,然后使用它向我的服务器发送报告。

我做了一个CrashHandler类,它实现了UncaughtExceptionHandler,并故意在Activity中做一个NullPoint错误的例子,这个类运行良好,但是在方法uncaughtException中有点问题:</p>

代码行 1 将堆栈跟踪打印为:

但代码行只显示:

你注意到它没有显示:

我知道我没有调用 getCause(),但是当尝试使用 getCause() 时,它返回 null,而不是 throwable;

我试图查看可抛出类的源代码......但注意到

你能告诉我为什么 getCause 为空但 printStackTrace 有一个错误原因打印出来吗?

0 投票
1 回答
3644 浏览

java - 在 main() 中记录 Throwable

由于不同帖子Throwable中列出的原因,不建议抓捕。但是,有一个像下面这样的主要结构有意义吗?如果删除 Throwable 行,则不会记录错误。

0 投票
1 回答
230 浏览

android - Android 线程和 Throwables

我有一个执行 I/O 的类(我们称之为 ABC)。FileOutputStream.close 之类的某些内容使您可以在它们周围使用 try catch 块。此外,我创建了自己的可投掷对象,以帮助用户和我了解正在发生的事情。

在这个类中,我传递了创建它的活动的上下文,并使其创建并警告对话框带有可抛出的文本。

所以这是我的问题,我需要从一个新线程中运行这个类,但仍然想从可抛出的文本中获取信息。

例如,这就是我课堂上典型的 catch 子句的样子。

我会做类似的事情吗

this 在 ABC 类中代替警报对话框?然后我会将警报对话框移动到调用我的 Runnable 接口运行方法或在后台执行异步任务的尝试捕获吗?

0 投票
5 回答
48190 浏览

java - Java - 可抛出异常

我目前正在使用 play2 框架。

我有几个正在抛出的类,exceptions但 play2s 全局onError处理程序使用 throwable 而不是异常。

例如,我的一门课是扔一个NoSessionException. 我可以检查一个可抛出的对象,如果它是一个NoSessionException

0 投票
2 回答
1363 浏览

java - Java:将可抛出/异常的整个堆栈跟踪转换为 ByteBuffer 的最有效方法?

将可抛出/异常的整个堆栈跟踪转换为 ByteBuffer(在 Java 中)的最有效方法是什么?

具体来说,我需要将整个异常记录到数据库中。Thread.currentThread().getStackTrace() 返回 StackTraceElement[] 数组的列表。

那么,Throwable 类中有一个 printStackTrace() 方法吗?

0 投票
1 回答
1152 浏览

java - 我需要一位专家来让我了解 Java Throwable 的 addSuppressed 的作用?

可能重复:
JDK 1.7 Throwable `addSuppressed()` 方法

所以Java在Throwable中有一个方法

这就是它的作用:

将指定的异常附加到为传递此异常而被抑制的异常。此方法是线程安全的,通常由 try-with-resources 语句调用(自动和隐式)。

..我对此感到困惑,什么是“为传递此异常而被抑制的异常的指定异常”。?

0 投票
1 回答
4465 浏览

java - 捕获所有 java.lang.Error 以进行日志记录,并允许它们在堆栈中向上工作

简短版本: 我如何捕获java.lang.Error特定代码部分中的所有抛出以记录它们,并允许它们传播调用堆栈,就好像我根本没有捕获它们一样?

长版...

在一段代码中,我想捕获所有内容java.lang.Error以便记录它们。但我也想让Error继续在调用堆栈中向上工作,这样行为就好像我根本没有抓住它一样。

此外,我想捕获并记录所有java.lang.Exceptions,然后让它们也传播调用堆栈。

我试过这个...

...但问题是我必须修改调用堆栈中更高的每个方法才能 throw Throwable,其中一些方法不是我要修改的(我的方法被第三方框架中的方法调用)。

我会对某种包裹技术感到满意,我会把它放在Throwable别的东西里然后扔掉,但我更愿意让任何java.lang.Errors 以它们自然的方式向上传播,就好像我根本没有抓住它们一样。

建议?

编辑: 有人问“我为什么要这样做?”。我认为这是一个很好的问题,我将澄清:这是我公司使用的框架。它取决于 jar 中包含的其他框架,系统管理员可能忘记包含这些框架。在这种情况下,代码中的某些位置会出现 NoClassDefFoundError。但只有用户在浏览器中看到此错误,在服务器日志中找不到。我想记录它,以便系统管理员可以知道发生了此错误,因为他将有处理它的说明。

0 投票
2 回答
1145 浏览

java - 在可抛出对象中重载 getCause() 方法

如何在可抛出对象中重载 getCause() 方法?我有以下内容,但它似乎不起作用,因为它说它不能用字符串重载。

0 投票
2 回答
76 浏览

java - 运行用户提供的代码的控件库是否应该拦截异常或 Throwables?

Exception我在这里看到了许多关于和之间区别的一般问题Throwable。我知道区别,我有一个更具体的问题。

我正在编写一个库,它将多个用户提供的代码绑定并运行在一起。如果其中一个部分失败,则丢弃整个计算。为了保持资源使用干净,用户还可以提供在此类事件发生时运行的终结器。模式是这样的:

我的问题是:我应该像上面那样拦截并重新抛出Exceptions,还是应该也拦截Throwables? 如果Error发生,是否有机会

  • JVM会恢复吗?(那么运行终结器有什么意义吗?)
  • JVM 将处于实际上可以运行它们的状态吗?

此外,在运行终结器时,我会捕获并忽略它们的异常,以便其他注册的终结器有机会运行,例如:

同样,我应该只截取Exceptions,还是也截取Throwables?忽略而不是重新抛出Errors 似乎更有问题。