问题标签 [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.
java - 将 Throwable 用于除异常之外的事物
我总是在错误的上下文中看到 Throwable/Exception。但是我可以想到一些情况,扩展 aThrowable
只是为了摆脱一堆递归方法调用会非常好。例如,假设您试图通过递归搜索的方式在树中查找并返回某个对象。一旦你发现它把它粘在某个地方Carrier extends Throwable
并扔掉它,然后在调用递归方法的方法中捕获它。
肯定的:你不必担心递归调用的返回逻辑;既然你找到了你需要的东西,为什么还要担心如何将该引用备份到方法堆栈中。
否定:您有一个不需要的堆栈跟踪。该try/catch
块也变得违反直觉。
这是一个非常简单的用法:
问题是,有没有更好的方法来实现同样的目标?此外,以这种方式做事有什么本质上的坏处吗?
java - 关于 java Throwable
当我开发 android 应用程序时,我想制作一个 CrashReport 类,然后使用它向我的服务器发送报告。
我做了一个CrashHandler类,它实现了UncaughtExceptionHandler,并故意在Activity中做一个NullPoint错误的例子,这个类运行良好,但是在方法uncaughtException中有点问题:</p>
代码行 1 将堆栈跟踪打印为:
但代码行只显示:
你注意到它没有显示:
我知道我没有调用 getCause(),但是当尝试使用 getCause() 时,它返回 null,而不是 throwable;
我试图查看可抛出类的源代码......但注意到
你能告诉我为什么 getCause 为空但 printStackTrace 有一个错误原因打印出来吗?
java - 在 main() 中记录 Throwable
由于不同帖子Throwable
中列出的原因,不建议抓捕。但是,有一个像下面这样的主要结构有意义吗?如果删除 Throwable 行,则不会记录错误。
android - Android 线程和 Throwables
我有一个执行 I/O 的类(我们称之为 ABC)。FileOutputStream.close 之类的某些内容使您可以在它们周围使用 try catch 块。此外,我创建了自己的可投掷对象,以帮助用户和我了解正在发生的事情。
在这个类中,我传递了创建它的活动的上下文,并使其创建并警告对话框带有可抛出的文本。
所以这是我的问题,我需要从一个新线程中运行这个类,但仍然想从可抛出的文本中获取信息。
例如,这就是我课堂上典型的 catch 子句的样子。
我会做类似的事情吗
this 在 ABC 类中代替警报对话框?然后我会将警报对话框移动到调用我的 Runnable 接口运行方法或在后台执行异步任务的尝试捕获吗?
java - Java - 可抛出异常
我目前正在使用 play2 框架。
我有几个正在抛出的类,exceptions
但 play2s 全局onError
处理程序使用 throwable 而不是异常。
例如,我的一门课是扔一个NoSessionException
. 我可以检查一个可抛出的对象,如果它是一个NoSessionException
?
java - Java:将可抛出/异常的整个堆栈跟踪转换为 ByteBuffer 的最有效方法?
将可抛出/异常的整个堆栈跟踪转换为 ByteBuffer(在 Java 中)的最有效方法是什么?
具体来说,我需要将整个异常记录到数据库中。Thread.currentThread().getStackTrace() 返回 StackTraceElement[] 数组的列表。
那么,Throwable 类中有一个 printStackTrace() 方法吗?
java - 我需要一位专家来让我了解 Java Throwable 的 addSuppressed 的作用?
所以Java在Throwable中有一个方法
这就是它的作用:
将指定的异常附加到为传递此异常而被抑制的异常。此方法是线程安全的,通常由 try-with-resources 语句调用(自动和隐式)。
..我对此感到困惑,什么是“为传递此异常而被抑制的异常的指定异常”。?
java - 捕获所有 java.lang.Error 以进行日志记录,并允许它们在堆栈中向上工作
简短版本: 我如何捕获java.lang.Error
特定代码部分中的所有抛出以记录它们,并允许它们传播调用堆栈,就好像我根本没有捕获它们一样?
长版...
在一段代码中,我想捕获所有内容java.lang.Error
以便记录它们。但我也想让Error
继续在调用堆栈中向上工作,这样行为就好像我根本没有抓住它一样。
此外,我想捕获并记录所有java.lang.Exception
s,然后让它们也传播调用堆栈。
我试过这个...
...但问题是我必须修改调用堆栈中更高的每个方法才能 throw Throwable
,其中一些方法不是我要修改的(我的方法被第三方框架中的方法调用)。
我会对某种包裹技术感到满意,我会把它放在Throwable
别的东西里然后扔掉,但我更愿意让任何java.lang.Error
s 以它们自然的方式向上传播,就好像我根本没有抓住它们一样。
建议?
编辑: 有人问“我为什么要这样做?”。我认为这是一个很好的问题,我将澄清:这是我公司使用的框架。它取决于 jar 中包含的其他框架,系统管理员可能忘记包含这些框架。在这种情况下,代码中的某些位置会出现 NoClassDefFoundError。但只有用户在浏览器中看到此错误,在服务器日志中找不到。我想记录它,以便系统管理员可以知道发生了此错误,因为他将有处理它的说明。
java - 在可抛出对象中重载 getCause() 方法
如何在可抛出对象中重载 getCause() 方法?我有以下内容,但它似乎不起作用,因为它说它不能用字符串重载。
java - 运行用户提供的代码的控件库是否应该拦截异常或 Throwables?
Exception
我在这里看到了许多关于和之间区别的一般问题Throwable
。我知道区别,我有一个更具体的问题。
我正在编写一个库,它将多个用户提供的代码绑定并运行在一起。如果其中一个部分失败,则丢弃整个计算。为了保持资源使用干净,用户还可以提供在此类事件发生时运行的终结器。模式是这样的:
我的问题是:我应该像上面那样拦截并重新抛出Exception
s,还是应该也拦截Throwable
s? 如果Error
发生,是否有机会
- JVM会恢复吗?(那么运行终结器有什么意义吗?)
- JVM 将处于实际上可以运行它们的状态吗?
此外,在运行终结器时,我会捕获并忽略它们的异常,以便其他注册的终结器有机会运行,例如:
同样,我应该只截取Exception
s,还是也截取Throwable
s?忽略而不是重新抛出Error
s 似乎更有问题。