java架包异常_java第四节 异常/访问控制/jar包

/*

异常

异常定义了程序中遇到的非致命的错误,而不是编译时的语法错误,如程序要打开一个不存在的文件

网络连接中断,操作数越界,装载一个不存在的类等

try, catch语句

throws关键字

自定义异常与Throw关键字

如何对多个异常进行处理

我们可以在一个方法中使用throw,try...catch语句来实现程序的跳转

一个方法被覆盖时,覆盖它的方法必须扔出相同的异常或异常的子类

如果父类扔出了多个异常,那么重写(覆盖)方法必须扔出那些异常的一个子集,

也就是说不能扔出新的异常

1 package语句及应用

2 package语句作为java源文件的第一条语句,如果没有package语句,则为缺少无名包

3 import语句及应用

4 jdk常用的包

java.lang...包含一些java语言的核心类,如String, Math, Integer, System.和Thread,提供常用功能

java.awt..包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)

java.applet...包含applet运行所需的一些类

java.net...包含执行与网络相关的操作类

java.io...包含能提供多种输入/输入功能的类

java.util...包含一些实用工具类,如定义系统特性,使用与日期日历相关的函数

javac -d . Lesson44.java 如果存在包名的话,那么就按目录生成编译文件

找不到类的三个排错方法

1: 类名写错了

2: 包名错误,是否import这个类所在的包名

3: 查看classpath是否设置类型

访问控制

private default protected public

同一类----------- 可 可 可 可

同一包中的类------ 可 可 可

子类------------- 可 可

其他包中的类----- 可

类本身也有访问控制,即在定义类的class关键字前加上访问

控制符,但类本身只有两种访问控制,

即public和 默认,父类不能是private 和protected

否则子类无法继承,public修饰的类能被所有的类访问

默认修饰(即class关键字前没有访问控制符)的类

只能被同一个懈中的所有类访问

java的命名习惯

下面是java中的一些命名习惯,假设xxx, yyy, zzz分别是一个英文单词的拼写

1 包名中的字母一律小写,如:xxxyyyzzz

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

3 方法名,第一个单词小写,后面的每个单词的首字母大写,如:xxxYyyZzz

4 变量名,第一个单词小写,后面每个单词的首字母大写,如xxxYyyZzz

5 常量名中的第个字母一律大写,如XXXYYYZZZ

使用jar文件

jar -cvf

jar -tvf

jar -xvf

jar -tvf > a.txt

用rar查看jar文件中的内容

注意压缩后的jar文件中的目录结构

快速查看jar包中是否有我们想找的类

jar查看帮助

jar -cf lesson4.jar org 将org目录生成一个lesson4.jar的包文件

jar -cvf lesson4.jar org

jar -tf lesson4.jar 查看包内容

jar -xvf lesson4.jar 解压包

jar -xvf rt.jar > 1.txt 重写向

*/

package org.it315;

//import java.awt.*;

//import java.awt.event.*;

//import java.sql.*;

//import java.util.*;

/*class SubTest extends Test

{

//在子类中只能扔出父类的异常,只能比父类的少,不能比父类的异常多

public int devide(int x, int y) throws NullPointerException

{

}

};*/

//定义自己的异常类

import org.it315.*;

import org.it315.example.*;

class TestException

{

public static void main(String[] args) //throws Exception

{

try

{

new org.it315.example.Test().devide(3,1);

//new org.it315.example.Test().fun1();

//现在不能访问了,因为TestSub是Test类的子类,但TextException类的子类,所以不能访问

//如果为如果fun1()为public将可以被其它包中的类访问

//new Test().fun1();

//int i=1+1;

}

catch(ArithmeticException e)

{

System.out.println("ArithmeticException");

e.printStackTrace();

}

catch(org.it315.DevideByMinusException e)

{

System.out.println("DevideByMinusException");

e.printStackTrace();

return;

//System.exit(0); //程序到此结束了,

//finally将不被执行了

}

catch(Exception e)

{

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

}

finally

{

System.out.println("不管是否有异常,finally的代码都要执行");

}

System.out.println("program is running here!");

}

}

class TestSub extends Test

{

public void fun3()

{

fun1();

}

};

package org.it315;

public class DevideByMinusException extends Exception

{

public DevideByMinusException(String msg)

{

super(msg);

}

};

package org.it315.example;

//import org.it315.*;

import org.it315.DevideByMinusException;

public class Test

{

//throws Exception加上该throws Exception 在调用该函数时,那么必须实现try...catch

//多个异常类的处理

//public int devide(int x, int y) throws ArithmeticException, org.it315.DevideByMinusException

public int devide(int x, int y) throws ArithmeticException, DevideByMinusException

{

if(y<0)

{

//throw new org.it315.DevideByMinusException("devisor is "+y);

throw new DevideByMinusException("devisor is "+y);

}

int result = x/y;

return result;

}

//throw try...catch还可以实现话句的跳转

/*void fun()

{

try{

if(x==0)

{

throw new XxxException("xxx");

}else{

throw new YyyException("yyy");

}

}catch(XxxException e)

{

//......

}

catch(YyyException e)

{

//.....

}

}*/

//private void fun1()

protected void fun1() //没有访问修饰的叫做包类型的访问修饰符. 在其它的包中是不可以访问

{

}

private void fun2()

{

fun1();

}

}

class Test1

{

public static void main(String[] args)

{

new Test().fun1();

}

};

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值