任何Throwable都可以被捕获
class CatchThrowable {
public static void main(String[] args){
try{
throw new Throwable();
} catch (Throwable t){
System.out.println("throwable caught!");
}
}
}
输出:
throwable caught!
因此,如果在初始化块期间做不好的事情,我希望能够捕获ExceptionInInitializerError。但是,以下操作无效:
class InitError {
static int[] x = new int[4];
static { //static init block
try{
x[4] = 5; //bad array index!
} catch (ExceptionInInitializerError e) {
System.out.println("ExceptionInInitializerError caught!");
}
}
public static void main(String[] args){}
}
输出:
java.lang.ExceptionInInitializerError
Caused by: java.lang.ArrayIndexOutOfBoundsException: 4
at InitError.<clinit>(InitError.java:13)
Exception in thread "main"
并且如果我更改代码以另外捕获ArrayIndexOutOfBoundsException
class InitError {
static int[] x = new int[4];
static { //static init block
try{
x[4] = 5; //bad array index!
} catch (ExceptionInInitializerError e) {
System.out.println("ExceptionInInitializerError caught!");
} catch (ArrayIndexOutOfBoundsException e){
System.out.println("ArrayIndexOutOfBoundsException caught!");
}
}
public static void main(String[] args){}
}
被捕获的是ArrayIndexOutOfBoundsException:
ArrayIndexOutOfBoundsException caught!
谁能告诉我为什么呢?
顾名思义,这ExceptionInInitializerError
是一个错误,而不是例外。与异常不同,错误并不意味着被捕获。它们表示致命的不可恢复状态,旨在停止您的程序。
ExceptionInInitializerError
表示static
变量的初始化程序引发了一个尚未捕获的异常-
在您的情况下为ArrayIndexOutOfBoundsException
,但是任何异常都会导致此错误。由于静态初始化发生在正在运行的程序的上下文之外,因此没有地方可以传递异常。这就是Java产生错误而不是传递异常的原因。
问题内容: 我正在开发一个需要大量内存的程序,并且我想在内存不足异常发生时捕获。我听说这是不可能的,但对此是否有所发展感到好奇。 问题答案: 这也不例外。这是一个错误:java.lang.OutOfMemoryError 当它从Throwable下降时,你可以捕获它: 但是,除非你要进行一些相当具体的工作(例如,在特定代码段内分配大量工作),否则你可能将无法捕捉到它,因为你将不知道它将从何处抛出。
问题内容: 此问题与跨域资源共享(CORS)有关。 如果在发出CORS请求时出现错误,Chrome(以及AFAIK其他浏览器)会将错误记录到错误控制台。消息示例可能如下所示: XMLHttpRequest无法加载。原产地不被访问控制允许来源允许的。 我想知道是否有办法以编程方式获取此错误消息?我尝试将调用包装在try/catch中,也尝试添加事件处理程序。两者均未收到错误消息。 问题答案: 看到:
这个问题不是关于Rollbar tho:)
在用户批准付款后,用参数调用return_url,并调用APIendpoint来捕获订单。 在我的paypal developer dashboard检查后,我注意到sandbox buyer账户的paypal余额被扣除了该金额,但sandbox store owner(商业账户)没有将其paypal余额添加到该金额。 在检查了paypal developer仪表板中的通知后,我注意到了两个通知,
问题内容: 我们遇到了一个奇怪的问题,其中似乎有两个线程正在调用,然后在方法内部永远等待。从外部看,内部看起来像是一个僵局。 到目前为止,我们只看到这种情况发生一次。 谁能想到任何可能导致这些症状的东西? 编辑 :相关线程的线程转储在这里: 问题答案: 可能不是您想要的答案,但这可能是JVM错误。看到 http://bugs.sun.com/bugdatabase/view_bug.do?bug_
问题内容: 使用Twitter4j API是否可以获得100条以上的推文? 如果是这样,谁能指出这样做的方法? 问题答案: 需要查看您的代码以提供特定于您的案例的代码示例,但是您可以通过或进行操作。 此信息适用于Twitter API。 要获取 前 100条推文: 在您刚刚通过查询检索的集合中找到 最低的 ID 使用设置为您刚刚找到的ID 的选项执行相同的查询。 要获取 接下来的 100条推文: