欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java.lang.*Error

程序员文章站 2022-05-23 18:52:11
...

 


public class *Error





extends VirtualMachineError

当应用程序递归太深而发生堆栈溢出时,抛出该错误。


*Error是由于当前线程的栈满了  ,也就是函数调用层级过多导致,比如死循环,或者递归层次过深。

 

 


附上thinking in java中的一段代码:p287页

 

在调用toString()方法时候,this发生类型转换,从InfiniteRecursion转化为String类型。这个过程中需要调用this.toString()方法。既然进入了递归调用,最终到处出错。

 

 

package com.thinking.string;

import java.util.ArrayList;
import java.util.List;

public class InfiniteRecursion {
	public String toString() {
		//An exception occurred: java.lang.*Error
//		return " InfiniteRecursion address: " + this + "\n";
		return " InfiniteRecursion address: " + super.toString() + "\n"; 
		 
	}
	
	public static void main(String[] args) {
		List<InfiniteRecursion> v = new ArrayList<InfiniteRecursion>();
		for (int i = 0; i < 10; i++) {
			v.add(new InfiniteRecursion());
		}
		System.out.println(v);
	}
}

 

 

参考资料:http://blog.sina.com.cn/s/blog_68f018570100vhcr.html