5.包,异常!

 

一,package

1,定义包

在代码的第一行使用package关键字定义包名,包名全部小写,用”.”隔开;

2,编译运行

编译:javac -d目录源文件名

运行:java包名.类名

3,访问不同包中的类

一个类如果想被其他包中的类使用,需要在class前面加上public

类一旦加上public,文件名必须和类名一致;

在源代码中直接使用类名形式访问一个类,默认是先找相同包中的类,如果没有再找import设置的类;

如果类中有2个以上的对象且想访问不同包中的类,需要在对象前加包名.类名.对象;

4,导入包

每次使用其他包中的类都加包名很麻烦,我们可以使用import关键字导入包,这样每次使用的时候直接用类名即可.

导入类名: 无论当前包中是否有要找的类, 都去导入的包中找

导入*: 如果当前包中有同名的类, 就在当前包中找,当前包中没有同名类, 才去导入包中找

5,有包类和无包类的访问

无包的类能不能访问有包的类:能

有包的类能不能访问无包的类:不能,因为不写导入是找同包的类,并且无包的类无法导入;

6,总结:

包也是一种封装形式;

以后写类都加上包,并且要写在程序文件的第一行,

类前用public修饰,类名必须和文件名一致,类公有后,被访问的成员也要声明公有才可以被访问,否则编译会报错;

导入包用类名方式;

编译时加上-d,运行时加上包名;

.jar

       1.jar

              jar cvf jar文件名文件夹名文件夹名

       2.运行jar

              修改jar文件中的META-INF文件夹中的MANIFEST.MF文件,添加Main-Class配置,指定一个类作为jar文件运行时要找的类

格式:Main-Class cn.itcast.PerdonDemo

       3.使用jar包中的类

              jar包的绝对路径配置到classpath,即可使用其中的类

.异常

       1.什么是异常

              异常是程序运行过程中抛出的一些错误, 一旦出现异常,下面的代码将不再执行.

  *2.异常的分类

              ExceptionError有一个共同的父类Throwable,代表在程序中可以被抛出的对象.

              Error:由虚拟机抛出的一些严重的错误, 程序中无法处理.

              Exception除了RuntimeException:编译时异常, 编译时必须捕捉或声明.

              RuntimeException及其子类:运行时异常, 编译时可以不处理.

       3.抛出异常

              使用throw关键字可以抛出一个异常对象

              抛出一个异常可以通知当前方法的调用者

Throwsthrow的区别:

Throws使用在函数上;后面跟异常类,可以跟多个,用逗号隔开;

Throw使用在函数内;后面跟的是异常对象;

一般情况下,函数内出现异常,函数上需要声明;

  *4.处理异常

              在运行一段有可能出现异常的代码时, 我们可以对其进行处理,处理方式有两种

              声明: 在当前方法签名最后使用throws关键字声明有可能出现的异常,方法中调用其他方法如果出现异常, 当前方法中断,将异常抛出

              捕捉: 将有可能出现异常的代码放在try代码块中,后面跟上catch代码块,捕捉有可能出现的异常, 如果try中代码出现异常,就会执行catch代码;

Catch是用于处理异常,如果没有catch就代表异常没有被处理过,如果该异常是检查时异常,那么必须声明。

  *5.finally

              finally用来和try配合使用,只要执行了try中的代码,就一定会执行finally, 除非使用System.exit(0)退出Java虚拟机

              finally中也可以再使用try {} finally{}代码块和循环嵌套模式, 用来执行多条必须执行的语句

try {

需要被检测的代码;

}

catch(异常类变量) {

处理异常的代码:(处理方式)

}

finally {

一定会执行的语句;

}

例:

class ExceptionDemo {

       public static voidmain(String[] args) {

              Demo d = new Demo();

              try {

                     int x = d.div(4,0);

                     System.out.println("x="+x);

              }catch(Exception e) {

                     System.out.println("除零了");

//异常名称,异常信息;

                     System.out.println(e);   

//异常名称,异常信息,异常出现的位置

//Jvm默认的异常处理机制,就是在调用printStackTrace方法;

                     e.printStackTrace();

 

              }

              System.out.println("over");

       }

      

}

class Demo {

       int div(int a, int b) {

              return a/b;

       }    

}

输出结果:

除零了

java.lang.ArithmeticException: / by zero

java.lang.ArithmeticException: / by zero

        atDemo.div(ErrorDemo.java:19)

        atErrorDemo.main(ErrorDemo.java:6)

over

  *6.重写方法时抛出异常问题

              子类重写父类方法时, 不能抛出父类没有声明的异常

       7.处理多个异常

              可以使用throws关键字声明抛出多个异常,多个异常之间用","分隔

              可以将有可能出现异常的代码放在try,后面跟上多个与之相对应的catch, 捕捉不同的异常.注意: 如果多个catch中异常出现继承关系,捕捉时父类异常不能写在子类异常的上面

       8.自定义异常

              如果希望抛出一个自己定义的异常对象, 那么可以声明一个类继承Exception或者RuntimeException

因为项目中会出现特有的问题,而这些问题并未被java所描述并封装对象,所以对于这些特有的问题可以按照java对问题封装的思想,将特有的问题,进行自定义的异常封装;

继承Exception的原因:

异常体系有一个特点:因为异常类和异常对戏那个都被抛出;

它们都具备可抛性,这个可抛性是Throwable这个体系中独有特点;

只有这个体系中的类和对象才可以被throwsthrow操作;

             

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值