365资讯下载安装-365bet是什么公司-365bet平台怎么样

【Java学习笔记】6:Java中的包(package)与Exception类异常处理

【Java学习笔记】6:Java中的包(package)与Exception类异常处理

包(package)是在使用多个类或接口时,为了避免名称重复而采用的一种措施。

package的声明如下:

package package的名称;

如果几个类分别属于不同的package,在某个类要访问到其他类的成员时(显然要访问的类需要是public的),在程序代码内必须明确地指明“被访问package的名称.类名称”。

package的导入如下:

import package 名称.类名称;

如果要导入包中的所有类:

import package 名称.*;

*加包示例(以下是同一工程的两个子包中的两个文件)

//包pc1中的Person.java文件

package pc1;

public class Person {

public String talk()

{

return "Person->>talk()";

}

}

//包pc2中的TestPackage.java文件

package pc2;

import pc1.*;

public class TestPackage {

public static void main(String[] args) {

System.out.println(new Person().talk());

}

}

JAVA中成员变量和成员方法有4种访问控制权限:

①private:只能在本类中被使用

②default:还可以被同一包中的其它类访问

③protected:还可以被其它包中的子类访问

④public:还可以被其他包中的任何类访问

JAVA命名习惯:

①包名中的字母一律小写,如demo.java

②类名、接口名应当使用名词,每个单词的首字母大写,如TestPerson

③变量名(属性名)第一个单词小写,后面的每个单词首字母大写,如newSum

④方法名的第一个单词小写,后面每个单词的首字母大写,如talkPerson()

⑤常量名中的每个字母一律大写,如COUNTRY

jar文件和jar命令:

Jar文件(jar包)是java中的class文件打包而成的,相当于类库。如果开发者开发了许多类,但更需要把这些类提供给用户使用时,通常都会将这些类压缩到一个jar文件中,以jar包的方式提供给用户使用。只要别人的classpath环境变量的设置中包含这个jar文件,Java虚拟机就只能自动在内存中解压这个jar文件,把这个jar文件当做一个目录,在这个jar文件中去寻找需要的类名及包名所对应的目录结构。

异常可以分为两大类:java.lang.Exception类与java.lang.Error类,它们均继承自java.lang.Throwable类,本章笔记只讨论前者。

Java通过面向对象的方法来处理异常,在一个方法的运行中如果发生异常,则这个方法生成代表该异常的一个对象,并把它交给运行时系统,运行时系统寻找相应的代码来处理这个异常。把生成异常对象并提交给运行时系统的过程称为抛掷(throw)一个异常。运行时系统在方法的调用栈中查找,从生成异常的方法开始进行回溯,直到找到包含相应异常处理的方法为止,这一个过程称为捕获(catch)一个异常。

异常处理由以下三个程序块组成:

try

{

//要检查的语句

}

catch(异常类 对象名称)

{

//异常发生时的处理语句

}

finally

{

//一定会运行到的程序代码

}

语法规则:

①try程序块若是有异常发生,程序的运行便中断,并抛出“异常类所产生的对象”。

②抛出的对象如果属于catch()括号内要捕获的异常类,catch则会捕获此异常,然后进到catch的块里继续执行。

③无论try程序块里是否捕获到异常,或者捕获到异常是否与catch()括号里的异常相同,最后一定会运行finally快里的程序代码。

*抛掷异常和异常处理的例子

package day6;

public class TestException1 {

public static void main(String[] args) {

int a=4,b=0;

try

{

if(b==0)

throw new ArithmeticException("一个算数异常");//抛出异常

else

System.out.println(a+"/"+b+"="+a/b);

}

catch(ArithmeticException e)

{

System.out.println("抛出异常为:"+e);

}

}

}

运行结果:

抛出异常为:java.lang.ArithmeticException: 一个算数异常

*指定方法抛出异常

package day6;

class Test

{

//throw 在制定方法中中不处理异常,在调用此方法的地方处理

void add(int a,int b) throws Exception

{

int c;

c=a/b;

System.out.println(a+"/"+b+"="+c);

}

}

public class TestException2 {

public static void main(String[] args) {

Test t=new Test();

try

{

t.add(4,0);

}

catch(Exception e)//注意不能用Exception类的子类

{

System.out.println(e);

}

}

}

运行结果:

java.lang.ArithmeticException: / by zero

*定义自己的异常类

package day6;

class MyException extends Exception//必须继承异常父类

{

public MyException(String msg)

{

//调用Exception类的构造方法,存入异常信息

super(msg);

}

}

public class TestException3 {

public static void main(String[] args) {

try

{

//在这里用throw直接抛出一个MyException异常

throw new MyException("自定义异常");

}

catch(Exception e)

{

System.out.println(e);

}

}

}

运行结果:

day6.MyException: 自定义异常

throw和throws都是java的关键字,注意区分:

①throw是在方法内部抛出一个异常,语法:

throw 异常对象

throw要么和try-catch-finally语句配套使用,要么与throws配套使用。

②throws是在方法定义时告诉编译器该方法可能会发生异常,语法:

thorws 异常类

其中异常类可以声明多个,不同的异常类之间用逗号分隔。

*自定义异常的使用

//MyExc包中的RadiuException.java文件

package MyExc;

public class RadiuException extends Exception{

public RadiuException(String msg)

{

//调用Exception类的构造方法,存入异常信息

super(msg);

}

public String toString()

{

return "半径不合法";

}

}

//同工程的MyProj包中的UseMyException.java文件

package MyProj;

import MyExc.*;

class Circle

{

private double r;

public void setR(double r1) throws RadiuException

{

if(r1<0)

throw new RadiuException(null);//抛出异常实例

else

r=r1;

}

public void printArea()

{

System.out.println("Area is "+Math.PI*r*r);

}

}

public class UseMyException {

public static void main(String[] args) {

Circle c1=new Circle();

try

{

c1.setR(-2);

}

catch(Exception e)

{

System.out.println(e.toString());

}

finally

{

c1.printArea();

}

}

}

运行结果:

半径不合法

Area is 0.0

在调用throws抛出异常的方法时,可以将整个异常在方法中再向上传递,main()方法作为整个程序的起点,如果在main()方法处用throws抛出异常,则此异常就将交给JVM(Java虚拟机)进行处理。

参考书籍是人民邮电的《Java从入门到精通》与吉林大学的《Java程序设计》,笔记中的部分例子和释义是基于这两本书写的,也有部分来自网络渠道。

收工,明天新学期就要开始了,要做出一些改变了。虽然时间会很紧张,还是要好好加油<( ̄ˇ ̄)/。

相关推荐