为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
Java入门第三季_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

Java入门第三季

陈码农
难度入门
时长 5小时 0分
  • ①如果finally{}块中有return语句,只执行finally{}块中的return语句 ②如果finally{}块中没有return语句,如果try{}有异常,则返回catch{}中的return语句,不然执行try{}中return语句 在这种情况下,return语句块是在finally{}之后执行 finally中有return用finally.return代替,顺序为“try语句 -> catch -> finally -> finally.return -> catch.return -> try.return”,没有相应的阶段请忽略该阶段,任何阶段的return被执行,则整个语句块结束
    查看全部
  • 那么,“==” 和 equals() 有什么区别呢? ==: 判断两个字符串在内存中首地址是否相同,即判断是否是同一个字符串对象 equals(): 比较存储在两个字符串对象中的内容是否一致 PS:字节是计算机存储信息的基本单位,1 个字节等于 8 位, gbk 编码中 1 个汉字字符存储需要 2 个字节,1 个英文字符存储需要 1 个字节。所以我们看到上面的程序运行结果中,每个汉字对应两个字节值,如“学”对应 “-47 -89” ,而英文字母 “J” 对应 “74” 。同时,我们还发现汉字对应的字节值为负数,原因在于每个字节是 8 位,最大值不能超过 127,而汉字转换为字节后超过 127,如果超过就会溢出,以负数的形式显示。(关于编码,我们在后面课程中会详细介绍,小小期待哦~~)
    查看全部
  • List接口及其实现类 - ArrayList
    查看全部
  • Collection接口
    查看全部
  • Collection and Map
    查看全部
  • 字符串 str 中字符的索引从0开始,范围为 0 到 str.length()-1 使用 substring(beginIndex , endIndex) 进行字符串截取时,包括 beginIndex 位置的字符,不包括 endIndex 位置的字符
    查看全部
  • 应用总结
    查看全部
    0 采集 收起 来源:经验总结

    2017-05-17

  • 不是为了实现哪一句代码的。initCause()这个方法就是对异常来进行包装的,目的就是为了出了问题的时候能够追根究底。因为一个项目,越往底层,可能抛出的异常类型会用很多,如果你在上层想要处理这些异常,你就需要挨个的写很多catch语句块来捕捉异常,这样是很麻烦的。如果我们对底层抛出的异常捕获后,抛出一个新的统一的异常,会避免这个问题。但是直接抛出一个新的异常,会让最原始的异常信息丢失,这样不利于排查问题。举个例子,在底层会出现一个A异常,然后在中间代码层捕获A异常,对上层抛出一个B异常。如果在中间代码层不对A进行包装,在上层代码捕捉到B异常后就不知道为什么会导致B异常的发生,但是包装以后我们就可以用getCause()方法获得原始的A异常。这对追查BUG是很有利的。 class A{ try{ ... }catch(AException a){ throw new BException(); } } ... class B{ try{ ... }catch(BException b){ //这时候你需要去看b异常式什么问题导致的,你在A类里面 //没有对AException进行包装,所以你无法知道是A导致的B } } 如果包装以后: class A{ try{ ... }catch(AException a){ BException b = new BEexception(); b.initCause(a); throw b; } } ... class B{ try{ ... }catch(BException b){ //什么导致了b呢? b.getCause();//得到导致B异常的原始异常 } }
    查看全部
  • 只有Error,Exception,RuntimeException提供了带cause参数的构造器,其他的所有异常类只能通过initCause()来设置cause。 所有Throwable的子类构造器中都可以接受一个cause对象作为参数。cause是异常原由,代表着原始异常。既可以在当前位置创建并抛出行的异常,也可以通过cause追踪到异常最初发生的位置。 异常链是一种面向对象编程技术,指将捕获的异常包装进一个新的异常中并重新抛出的异常处理方式。原异常被保存为新异常的一个属性(比如cause)。这个想法是指一个方法应该抛出定义在相同的抽象层次上的异常,但不会丢弃更低层次的信息。 把捕获的异常包装成新的异常,在新异常里添加原始的异常,并将新异常抛出,它们就像是链式反应一样,一个导致(cause)另一个 这个想法是指一个方法应该抛出定义在相同的抽象层次上的异常,(将所有捕获到的异常包装为新的异常类,即定义在相同的抽象层次上抛出)但不会丢弃更低层次的信息。 实现异常链功能的两种基本写法: public class chainTest { /** * @param args * Test1抛出喝大了异常 * Test2调用test1捕获了喝大了异常,并且包装成运行时异常,继续抛出 * main方法中调用test2尝试捕获test2方法抛出的异常 */ public static void main(String[] args) { try{ // TODO Auto-generated method stub chainTest ct=new chainTest(); ct.Test2();} catch(Exception e){ e.printStackTrace(); } }public void Test1()throws DrunkException{ throw new DrunkException("喝车别开酒"); } public void Test2(){ try{ Test1(); }catch( DrunkException e){ RuntimeException rte=new RuntimeException(e); //rte.initCause(e); e.printStackTrace(); throw rte; } } }
    查看全部
  • java中的异常链
    查看全部
  • //将基本类型转换为字符串 int c= 10; String str = Integer.toString(c); //方法一 String str = String.valueOf(c); // 方法二 String str = c + ""; //方法三,基本数据类型+空字符串 //将字符串转换为基本类型 String str = "8"; int d =Integer.parseInt(str); //方法一 int e=Integer.valueOf(str); //方法二
    查看全部
  • 自定义异常例子,上面一个为无参构造方法,下面为有参的构造方法
    查看全部
  • 异常顺序表
    查看全部
  • 异常例子
    查看全部
  • 异常抛出
    查看全部

举报

0/150
提交
取消
课程须知
此部分为 Java 课程的进阶内容,适合具有一定 Java 基础的伙伴们学习,如果您是新手,建议您移步 《Java入门第一季》 和 《Java入门第二季》,在理解并掌握面向对象相关知识后再回来进修。
老师告诉你能学到什么?
本课程将学习 Java 中的异常处理、集合框架、字符串、常用类等,逐步学习掌握 Java 高级技术。
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!