A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李志群 中级黑马   /  2012-10-23 23:59  /  1928 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李志群 于 2012-10-24 14:51 编辑

今天无意中敲异常的小例子  我用的Eclipse 敲的   控制台上输出的异常信息 怎么都没有顺序的呢 0 0 有图有例子。
看看 顺序位置 ,多运行几次 一定有我这种结果 不信大家试一试~!~!  懂原理的给讲讲

class Demo{
int div(int a,int b)throws Exception{
  return a/b;
}
}
public class ExceptionDemo {
/**
  * @param args
  */
public static void main(String[] args)//throws Exception
{
  // TODO Auto-generated method stub
//   int[] arr = new int[2];
//   System.out.println(arr[2]);//角标越界。
//  int[] arr = new int [1024*1024*700];//内存溢出
//  arr = null;
//  System.out.println(arr[2]);
  Demo d = new Demo();
  try{
   int x = d.div(4,0);//java.lang.ArithmeticException
   System.out.println("x="+x);
   //Jvm 默认异常处理方式就是将收到的异常 名字,信息,
  //位置,都打印在控制台上。
  //结束程序。
  }catch(Exception e){
   System.out.println("message: "+e.getMessage());//信息
   System.out.println("信息:"+e.toString());//异常名字+信息
   System.out.println("啊,异常了");//
   e.printStackTrace();//打印异常的信息和名字+位置
  }
  System.out.println("over");
}
}
更多图片 小图 大图
组图打开中,请稍候......

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

2 个回复

倒序浏览
刚刚去百度了下,,,,我觉得还是同意我的观点。。。e.pritStackTrace() 启动的时候 会创建一个线程,这样程序就属于多线程了 当然就像在群里说的一样,cup,,,,呵呵呵 cup随机执行。。。。。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 lilianchuang 于 2012-10-24 12:05 编辑

首先需要了解下System.out/System.err这里面的out和err都是PrintStream类型的实例,
System.out.println呢明显用的是out这个实例对象,
进入printStackTrace()
public void printStackTrace() {
        printStackTrace(System.err);
    }
可以看到printStackTrace方法使用的PrintStream实例其实就是System.err;
所以打印结果的变化的主要原因就在于out和err的使用上了,
这里涉及到操作系统为System.out和System.err分配的资源空间不同,可以理解为他们存放的数据不是在一个地方,
这样的话因为操作系统的调度把数据刷出来的时间不同,就可能使数据的打印顺序得到保障了,
例如
System.out.println(mess1);
System.out.println(mess2);
System.out.println(mess3);
System.err.println(mess4);
正常的顺序是mess1,mess2,mess3,mess4的打印,但是也可能发生out和err都接收数据后,操作系统第一个调度把err的mess4最先打印输出然后才是out的mess1,mess2,mess3
也可能是out输出mess1后,err的mess4被调度输出了,然后再是out的mess2,mess3 等等的可能...希望能有用。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马