已采纳回答 / lhtfreedom
initCause()这个方法就是对异常来进行包装的,目的就是为了出了问题的时候能够追根究底。因为一个项目,越往底层,可能抛出的异常类型会用很多,如果你在上层想要处理这些异常,你就需要挨个的写很多catch语句块来捕捉异常,这样是很麻烦的。如果我们对底层抛出的异常捕获后,抛出一个新的统一的异常,会避免这个问题。但是直接抛出一个新的异常,会让最原始的异常信息丢失,这样不利于排查问题。举个例子,在底层会出现一个A异常,然后在中间代码层捕获A异常,对上层抛出一个B异常。如果在中间代码层不对A进行包装,在上层代码...
2018-03-08
已采纳回答 / XAGT
大哥,你输入要放在try内面呀。
已采纳回答 / 精慕门6552492
for循环的情况下,在你输入两次一样的id,两次都会进行i++操作,而使用while循环的情况下,当你第二次输入同样的id是,会continue继续下一次循环,而没有把这次重复的id作为一次i++;
2018-03-05
已采纳回答 / GDHGN
其实呢,在第一次使用字符串引用的使用,也是通过new来创建字符串的,只是隐式的new一个字符串对象,在你第二次使用同一个字符串的时候,会查找堆内存中有没有和该字符串一样的,如果有就直接引用这个堆中已经有的字符串对象,如果没有,还是会new一个;而直接使用new的方法,创建字符串,是不管堆中有没有,直接创建一个新的对象,所以在比较的时候,都是false;
2018-02-28
最赞回答 / 故梦大人i
举一个简单的应用场景:一个用java搭建的Web服务器,在执行数据库查询的时候发现目标数据库有异常,然后抛Exception了。然后你觉得是应该把Exception抓住并分析处理还是让程序直接终止掉呢?直接终止的处理方法对于一个需要持续运行的Web服务器来说是无法接受的。而且在很多地方Exception可以用来传递消息,并不是错误让自己解决了就行了的,需要让外界知道并把处理权交给外界的调用者。 在可能出现异常,并且根据抛出的不同异常有不同的对象对其进行解析、处理的时候,可以用异常链来传递和分级处理我们遇到...
2018-02-27
最新回答 / 787888
for(i=0;i<l;i++){String book=bookName[i];//比较输入字符串和图书名字if(n1.equals(book)){book=bookName[i];System.out.println("book:"+book);break;}}if(!n1.equals(bookName[i])){System.out.println("图书不存在!");}}
2018-02-26