黑马程序员_学习日记二_异常二

---------------------- android培训java培训、期待与您交流! ----------------------

异常-finally语句块

    finally{}代码块中存放的代码一定会被执行,即定义一段执行的代码,通常用于关闭资源。比如在访问数据库服务器时,对数据的操作无论是否成功,都要关闭与数据库的连接,否则,会造成其他程序无法对数据库进行正常的访问。这时,就可以把断开数据库这部分操作放在finally{}代码块当中。所以,finally{}语句块中通常定义的是关闭资源代码,因为资源必须要得到释放。finally{}语句块只有一种情况不会执行,当执行到System.exit(0)的时候,就会退出java虚拟机,该语句下面的语句都得不到执行。

异常-处理语句的格式

    try{} catch(){}语句有三种格式:

    1.try{} catch(){}   catch(){}

    2.try{} catch(){}   finally{}

    3.try{} finally{}

注意:在try{}语句中还能嵌套try{} catch(){}语句,但是一定要保证异常得到处理,不然编译就会报错,记住:catch(){}语句块适用于处理异常的,如果没有catch(){}语句块就代表异常没有被处理,如果该异常是检测时的异常,那么必须要有throw语句声明抛出异常。

 异常-覆盖时的异常特点

    异常在子类覆盖中的体现:

    1.子类覆盖父类的方法时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类异常。

    2.如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出这多个异常里面的一个或多个异常,不能超出父类方法抛出的异常

    3.如果父类或者接口的方法中没有抛出异常,那么子类在覆盖该方法时,也不可以抛出异常;如果子类确实有异常抛出,就必须在子类的方法中利用try{} catch(){}语句进行处理。

异常-总结

    1.什么是异常?异常是对问题的描述,将问题进行对象的封装。

    2.异常体系:Throwable类:包括Exception类和Error类,而Exception类中还包括一个很特殊的异常类,那就是RuntimeException类。

    3.异常体系的特点:异常体系中的所有类以及建立的对象都具备可抛性,也就是说,可以被throws和throws关键字所操作,只有异常体系具备这个特点。

    4.throws和throw的区别:throw定义在方法内,用于抛出异常对象,throws定义在方法上,用于抛出异常类,并且可以抛出多个异常类,用逗号隔开。

    5.当自定义异常继承自Exception类时,当方法内有throw抛出异常对象,而且并未进行try{} catch(){}处理,必须要在方法上throws声明抛出异常类,否则编译失败。而当自定义异常继承自RuntimeException类时,方法上则不需要声明。

    6.如果方法声明抛出了异常,那么该方法调用者必须进行处理,处理方法可用try{}catch(){}语句块处理,还可以继续向下一级抛出。

    7.异常有两种,一个是编译时被检测异常,一个是运行时异常(编译时不检测),即RuntimeException。编译时异常是在编译时如果没有处理,那么将会导致编译失败,运行时异常在编译时不需要处理,编译器不检查,该异常发生一般不处理,让程序终止,然后对代码进行修正。

    8.自定义异常:定义一个类继承Exception或者RuntimeException,为了让该自定义类具备可抛性,让该类具备操作异常的共性方法。当要定义自定义异常的信息时,可以使用父类已经定义好的功能,将异常信息传递给父类的构造方法。

    9.自定义异常出现的好处:按照java的面向对象思想,将程序中出现的特有问题进行封装。

    10.异常的好处:将问题封装成对象,将正常流程代码和含有异常的代码相分离,方便处理异常代码时阅读。

    11.异常的处理原则:处理方式有两种,try{} catch(){}语句捕获或者继续向方法调用者抛出;调用到抛出异常的功能时,抛出几个异常,就处理几个,一个try{}语句块对应多个catch(){}语句块;如果有多个catch(){}语句块,则父类的catch(){}语句块放在最下面;catch(){}语句内,需要定义针对性的处理方式,不要简单只定义e.printStackTrace()输出语句,也不要不写任何语句;当本方法处理不了捕获到的异常时,可以继续在catch(){}语句中抛出;如果该异常处理不了,但并不属于该方法的异常,可以将异常转换后,再抛出和该方法相关的异常。

包package部分内容

    Java中包的作用:

    1.对类文件进行分类管理;

    2.给类提供多层命名空间;

    3.包也是一种封装形式;

    4.包的出现可以让java的类文件和源文件相分离。

    定义包名的一般规则:不要重复,可以使用URL来完成定义,因为URL是唯一的,尽量保证包的唯一性。

包与包之间的访问

    有了包,访问的范围就变大了,一个包中的类要被外部访问,必须要有足够大的权限,所以被访问的类要被public修饰,类公有后,被访问的成员也要公有才能被访问。

    包与包之间进行访问,被访问的包中的类以及类中的成员需要public修饰。

    不同包中的子类可以访问直接父类中被protected权限修饰的成员。包与包之间可以使用的权限只有两种:public和protected。

    总结:权限的大小

 

public

Protected

default

private

同一个类中

可以访问

可以访问

可以访问

可以访问

同一个包中

可以访问

可以访问

可以访问

不可以访问

子类

可以访问

可以访问

不可以访问

不可以访问

不同包中

可以访问

不可以访问

不可以访问

不可以访问

 导入import

    为了简化类名的书写,java当中定义了一个关键字import,import导入的是包中的类,如果要导入某个包中的多个类,则可以用import 包名1.包名2.*,但是建议不要经常使用,需要用到包中的哪个类,就导入哪个类,这样可以将其他不需要用到的类隐藏起来。

 

---------------------- android培训java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值