zoukankan      html  css  js  c++  java
  • 20155331 2016-2017-2 《Java程序设计》第5周学习总结

    20155331 2016-2017-2 《Java程序设计》第5周学习总结

    教材学习内容总结

    一、Java异常的基础知识

    异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出java.lang.ArithmeticException的异常。

    Java异常处理通过5个关键字try、catch、throw、throws、finally进行管理。基本过程是用try语句块包住要监视的语句,如果在try语句块内出现异常,则异常会被抛出,你的代码在catch语句块中可以捕获到这个异常并做处理;还有以部分系统生成的异常在Java运行时自动抛出。你也可以通过throws关键字在方法上声明该方法要抛出异常,然后在方法内部通过throw抛出异常对象。finally语句块会在方法执行return之前执行,一般结构如下:

    try{

    程序代码

    }catch(异常类型1 异常的变量名1){

    程序代码

    }catch(异常类型2 异常的变量名2){

    程序代码

    }finally{

    程序代码

    }

    Java异常处理机制

    对于可能出现异常的代码,有两种处理办法:
    第一、在方法中用try...catch语句捕获并处理异常,catach语句可以有多个,用来匹配多个异常。例如:

    public void p(int x){

    try{

    ...

    }catch(Exception e){

    ...

    }finally{

    ...

    }

    }

    第二、对于处理不了的异常或者要转型的异常,在方法的声明处通过throws语句抛出异常。例如:

    public void test1() throws MyException{

    ...

    if(....){

    throw new MyException();

    }

    }

    如果每个方法都是简单的抛出异常,那么在方法调用方法的多层嵌套调用中,Java虚拟机会从出现异常的方法代码块中往回找,直到找到处理该异常的代码块为止。然后将异常交给相应的catch语句处理。如果Java虚拟机追溯到方法调用栈最底部main()方法时,如果仍然没有找到处理异常的代码块,将按照下面的步骤处理:

    第一、调用异常的对象的printStackTrace()方法,打印方法调用栈的异常信息。

    第二、如果出现异常的线程为主线程,则整个程序运行终止;如果非主线程,则终止该线程,其他线程继续运行。
    通过分析思考可以看出,越早处理异常消耗的资源和时间越小,产生影响的范围也越小。因此,不要把自己能处理的异常也抛给调用者。

    还有一点,不可忽视:finally语句在任何情况下都必须执行的代码,这样可以保证一些在任何情况下都必须执行代码的可靠性。比如,在数据库查询异常的时候,应该释放JDBC连接等等。finally语句先于return语句执行,而不论其先后位置,也不管是否try块出现异常。finally语句唯一不被执行的情况是方法执行了System.exit()方法。

    System.exit()的作用是终止当前正在运行的 Java 虚拟机。finally语句块中不能通过给变量赋新值来改变return的返回值,也建议不要在finally块中使用return语句,没有意义还容易导致错误。

    教材学习中的问题和解决过程

    问:java异常处理中的catch语句可以有多个,但是catch后面的异常类的类型可以是父子类关系吗?

    答:首先所有异常都是Exception的子类。
    try后面可以跟多个catch,并且多个catch的异常可以有父子关系,但是要先catch子类异常,再catch父类异常。
    举例来说,SocketException套接字异常是IOException输入输出异常的子类,也就是说SocketException是具体的一种IOException,当然还有其它种类的IOException。
    所以要先catch(SocketException e),再catch(IOException e),这样的意思就是如果是SocketException异常就会在前面的catch被抓到,否则其它的IOException就会在后面被抓到。这样你就可以理解为什么要把子类放前面catch了。

    代码中遇到的问题与解决

    代码调试过程中出现了中文字符,括号不对称等问题。

    上周考试错题总结

    填空:写出编译P165 RPG.java的命令(javac –d . *.java)

    判断:final可以用在类,方法,变量前。(OK)

    填空:实现一个类中的equals()方法时,一定要同时实现(hashCode())方法

    填空:实现接口表示(拥有行为),但不是ISA关系。

    填空:System.out.println( “HELLO”.( toLowerCase() ) ) 会输出“hello”..

    面向对象中,设计经验可以用(设计模式)表达

    可以用父类声明对象引用,用子类生成对象,但需要强制类型转换。(X)

    结对及互评

    评分标准

    正确使用Markdown语法(加1分):

    不使用Markdown不加分

    有语法错误的不加分(链接打不开,表格不对,列表不正确...)

    排版混乱的不加分

    模板中的要素齐全(加1分)

    缺少“教材学习中的问题和解决过程”的不加分

    缺少“代码调试中的问题和解决过程”的不加分

    代码托管不能打开的不加分

    缺少“结对及互评”的不能打开的不加分

    缺少“上周考试错题总结”的不能加分

    缺少“进度条”的不能加分

    缺少“参考资料”的不能加分

    教材学习中的问题和解决过程, 一个问题加1分

    代码调试中的问题和解决过程, 一个问题加1分

    本周有效代码超过300分行的(加2分)

    一周提交次数少于20次的不加分

    其他加分:

    周五前发博客的加1分

    感想,体会不假大空的加1分

    排版精美的加一分

    进度条中记录学习时间与改进情况的加1分

    有动手写新代码的加1分

    课后选择题有验证的加1分

    代码Commit Message规范的加1分

    错题学习深入的加1分

    扣分:

    有抄袭的扣至0分

    代码作弊的扣至0分

    点评模板:

    基于评分标准,我给本博客打分:XX分。得分情况如下:xxx

    参考示例

    其他(感悟、思考等,可选)

    我感觉学习java应该是循环渐进,有始有终,按部就班,脚踏实地.java是一门有着阶梯性的一们语言,如果要学习它.我觉得最好还是按照java的学习体系,先学习什么,在学习什么,只有这样,我们在学习中才会遇到更少的麻烦.j

  • 相关阅读:
    洛谷P1908 逆序对
    codevs1690 开关灯
    洛谷P1195 口袋的天空
    洛谷P1816 忠诚
    洛谷P1536 村村通
    洛谷P3045 [USACO12FEB]牛券Cow Coupons
    洛谷P1801 黑匣子_NOI导刊2010提高(06)
    洛谷P2947 [USACO09MAR]仰望Look Up
    Android(java)学习笔记51:ScrollView用法
    Android(java)学习笔记50:通过反射获取成员变量和成员方法并且使用
  • 原文地址:https://www.cnblogs.com/dd1174751354/p/6624700.html
Copyright © 2011-2022 走看看