黑马程序员---JAVA类包,异常管理

一、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类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值