一、Java类包
概念:
为了避免工程中类名称冲突现象,Java提供了一种管理类文件的机制,Java类包。创建包:
格式:package 包名
package指定包名必须是Java文件中第一行非注释代码,包名指定后,包名会成为类名的一部分,预示着这个类必须使用包名。
例如:
package threadExec;
命名规则:1.必须使用小写字母;2.为了避免包冲突现象,一般使用创建者的Internet域名的反序;
导入包:
import 类名;或import 类型.*;导入静态成员:
import static 静态成员(Java5.0版本的新特性);二、异常
概念:
异常时一个在程序执行期间发生的时间,它中断了正在执行的程序的正常指令流。捕捉异常:
异常产生时,不做任何操作,程序会停止。
捕捉异常由try,catch,finally3部分组成。 try语句块是可能产生的异常的Java语句,catch语句块是在try语句块后,用来激发捕获的异常,finally语句块是异常处理结构的最后执行部分。try{
//Java语句
}
catch(Exception e)
{
//处理语句
}
finally
{
//异常出现与否,必须执行的Java语句
}
finally代码块:
finally代码块,定义的是一定会被执行的代码,无论是否有异常。通常用于关闭资源,例如数据库。catch中的return意味结束主函数,但finally中的内容仍然会执行。
哪些特殊情况finally语句块无法执行?
1.在finally语句块中发生了异常;
2.在前面的代码中执行了System.exit()退出程序;3.程序所在的线程发生死亡;
4.关闭CPU。Java常见异常
算术异常类:ArithmeticExecption
空指针异常类:NullPointerException
类型强制转换异常:ClassCastException
数组负下标异常:NegativeArrayException
数组下标越界异常:ArrayIndexOutOfBoundsException
违背安全原则异常:SecturityException
文件已结束异常:EOFException
文件未找到异常:FileNotFoundException
字符串转换为数字异常:NumberFormatException
操作数据库异常:SQLException
输入输出异常:IOException
方法未找到异常:NoSuchMethodException
自定义异常:
自定义异常类需继承自异常类,步骤如下:
1.创建自定义异常类;
2.在方法中通过throw关键字抛出异常对象;
3.如果在当前抛出的方法中处理异常,可以使用try-catch语句块捕获处理,否则,否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作
4.在出现异常方法的调用者中捕获并处理异常。
package exceptionExam;
class MyException extends Exception
{
String errorMessage;
public MyException(String errorMessage) {
// TODO 自动生成的构造函数存根
this.errorMessage = errorMessage;
}
public String getErrorName()
{
return errorMessage;
}
}
public class ExceptionDemo {
public static void checkNum(int i)throws MyException
{
if(i>0)
throw new MyException("输入的值大于0");
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
try {
checkNum(3);
} catch (MyException e) {
System.out.println(e.getErrorName());
// TODO: handle exception
}
}
}
异常在子父类中的覆盖
1.子类在赋给父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或该异常的子类。父类已经有了问题,并已经有了解决方式,子类不能超过父类的问题,因为无法解决,所以只能继承父类的问题或问题的子类,也就是早期的程序不能处理后期产生的新异常。当子类的异常超过了父类的范围,最终只能在子类内部自行解决,不能抛出。
2.如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。根本的原则是,子类抛出的异常,父类能够处理。
3.如果父类或接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常。如果子类的方法发生了异常,就必须要在主程序进行try处理,绝对不能抛出,很常见。异常时程序运行中产生的异常。所有的异常均为Throwable的子类。
Throwable类派生为Exception和Error类。
Error类及其子类用来描述Java运行系统中的内部错误以及资源耗尽的错误。
Exception称为非致命性类,可以捕捉处理使程序继续运行。
final、finally、finalize区别
final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
inalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等。