10异常,自定义异常,包,修饰符,jar包
来源:互联网 发布:保利尼奥 知乎 编辑:程序博客网 时间:2024/05/01 22:43
try{}
catch (){}
finally{}//finally中存放的是一定会被执行的代码。
作用:定义一定执行的代码,通常用于关闭资源,比如对数据库的操作,在连接数据库之后,操作数据
的时候出现异常了,程序就停止了,但是数据库还没有被关闭,资源还在浪费,这时候就用finally关闭数据库。
try有三种格式,1,try catch 2 try catch finally 3 try finally 4 try+多个 catch
记住一点:catch是用于处理异常,如果没有catch就代表异常没有被处理过,如果该异常是检测异常,那么必须声明。
异常在子父类覆盖中的体现是什么样的呢?
1子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类,
2如果父类方法抛出多个异常,那么子类在覆盖方法时,只能抛出父类异常的自给
2如果父类或者借口的方法中没有异常抛出,那么子类在覆盖方法时,也不可能抛出异常。如果子类方法发生了异常,就必须要进行try处理,绝对不能抛,
异常是什么?是对问题的描述,将问题进行对象的封装,
异常体系,:
Throwable
|--Error
|--Exception
|--RuntimeException
异常体系的特点:异常体系中的所有类,以及建立的对象都具备可抛性,也就是说可以被throw和throws关键字所操作,只有异常体系具备这个特点。
throw和throws的用法:
throw定义在函数内,用于抛出异常对象,
throw定义在函数上,用于抛出异常类,可以抛出多个用逗号隔开。
当函数内有throw抛出异常对象,并未进行try处理,必须要在函数上声明,否则编译失败,
注意,RuntimeException除外,也就是说,函数内如果抛出的是RuntimeException异常,函数上可以不用声明。
如果函数声明了异常,调用者需要进行处理,处理方式可以throws可以try。
异常有两种:编译时被检测异常。
该异常在编译时,如果没有处理(没有throw也没有try),编译失败
该异常被标识,代表可以被处理。
运行时异常(编译时不检测)
在编译时,没有处理。编译器不检查,
该异常的发生,建议不处理,让程序停止,需要对代码进行修正。
异常处理的语句:
try
{
需要被检测的代码
}
catch
{
处理异常的代码
}
finally
{
一定会执行的代码
}
有三种结合的方式,看上边,
1注意finally中定义的通常是 关闭资源代码,比如数据库,因为组员必须释放。
|2,finally只有一种情况不会被执行,当执行到System.out.ext(0);系统退出,finally不会被执行。
自定义异常:
定义类继承Exception或者RuntimeException。
1为了让该自定义类具备可抛性。
2,让该类具备操作异常的共性方法。
当要定义自定义异常信息时,可以使用父类已经定义好的功能。
将异常信息传递给父类的构造函数。
class MyException extends Exception
{
MyException ( Strinfg message)
{
super(message)
}
}
自定义异常:是按照java的面向对象思想,将程序成出现的特有问题进行封装。、
异常的好处:
1 将问题进行封装。
2,将正常流程代码和问题处理代码相分离,方便阅读。
异常的处理原则:1处理方式有两种try或者throw。
2,调用到抛出异常的功能时,抛出几个,就处理几个。
就有可能出现一个try对应多个catch的情况。
3,多个catch,父类的catch放在最下边。
4,catch内,需要定义针对性的处理方式,不要简单的定义printStackTrace,或者输出语句。也不要不写
当捕获到的异常,奔功能处理不了时,可以继续在catch中跑出,
异常的注意事项:在子父类覆盖式,
1, 子类抛出的异常,必须是父类异常的子类或者子集。
2, 如果父类或者接口没有异常抛出时,子类覆盖出现异常,只能try不能抛
包 对类文件进行分类管理2给类提供多层命名空间,3写在程序的第一行
全国那么多同名的地方,中关村,有俩,是北京的还是美国的?
定义包:package pack;定义包名,所有字母小写
包与包之间的访问:
1包与包之间进行访问,被访问的包中的类,以及类中的成员需要public修饰,一个包9个类,只有一个类被public修饰了,那么,不同包只能访问这个被public修饰的。
不同包中的类是可以有关系的,一个包中的类可以去继承另外一个包中的类。继承的时候记得要写上包名,而且可以直接使用父类的方法。
2不同包中的子类,还可以直接访问父类中被protected权限修饰的成员。(如果不用protected修饰的话,不同包中的类,可以互相访问,你继承一个包中的类,能访问父类的方法,人家没继承这个类,也能访问,所以要用protected吧父类修饰起来,这样的话,不继承就不能访问了。)
3包与包之间可以使用的权限修饰符只有两种,public 和protected(有局限性,只能给子类使用)
总结,权限从大到小
Public protected default(应该什么都不写) private
同一个类中 ok ok ok ok
同一个包中 ok ok ok no
子类 ok ok no默认的话子类拿不到 no
不同包中 ok no no no
Protected:用处不大,只有在继承中覆盖时,如果父类被protected修饰,那么就不能覆盖了,只能子类加上protected或者public才能覆盖,权限必须大于等于父类才行。
如果同一个包中有两个public修饰的类,另一个包中的类想访问这个包中的类可以吗,
不可以,因为一个java文件中,只能含有一个public修饰的类,并且类名和文件名一致。那怎么办?
再新建一个java文件,但是包名还是那个包的名称。
多层包目录:包里边还有包,eg:
为了简化类名的书写,使用一个关键字,import(导入的意思),一个程序可以不用import,它只为简化类名书写。
Import 导入的是包中的类。(如果一个包中还有下一个包,那么不继续导入)
Eg: *通配符代表着导入这个子包中所有的类,就不用挨个导入了。
如果import只写到packb,那么只导入了了DemoA.Class,其他的子包中的类是导入不进去的。
建议,不要写通配符*,需要用到包中的哪个类,就导入哪个类。
以后开发会用强大的开发工具,所以不用担心,shift+ctrl+O,自动导入
但是,如果开发工具导入了包中的类,两个包中有相同类,在写代码的时候必须加上包名,区分开来。
建议定义包名不要重复,可以使用url来完成定义,url是唯一的。吧网址倒过来写eg:packge cn.itcast.demo 因为网址是不重复的。
J——————————————————————————————
Jar包, c创建,f指定名字,packa和pack是要生成jar包的名字。
吧jar包位置放在classpath中
- 10异常,自定义异常,包,修饰符,jar包
- 第11天 自定义异常、权限修饰符、jar包、清除重复元素
- 异常_自定义异常_finally_package(包)_打jar包
- Java 异常+包+jar包
- 08 异常、包、jar文件
- 黑马程序员_七 【异常】【包】【权限修饰符】
- java异常,包--10
- 异常、包
- 异常、包
- 异常与所缺失的jar包
- 配置SSH jar包异常总结
- json依赖jar包缺少导致异常!
- 配置项目jar包导致的异常
- AndroidStudio中打jar包-异常日志
- Spring异常——jar包冲突
- spring项目打jar包异常
- 黑马程序员-包、jar压缩包、异常(Exception)【重点】
- 【10】面对对象6_异常格式及finally,包packge,import,jar包操作
- 寿命计算器测试结果
- Android[中级教程]第二章 数据存储之File
- centos下java配置
- android ADT插件安装
- Eigensystem
- 10异常,自定义异常,包,修饰符,jar包
- hdu 3473(划分树)
- 用户控件和服务器控件的数据绑定
- shell__test
- 【转载】一个关于VC++6.0与标准C++差异处理的小技巧
- oracle 11g RAC 的一些基本概念(三)
- How-to launch browser print dialog when showing printable page
- zoj_1170
- 菜鸟初学java心得