黑马程序员---异常的总结

------- android培训java培训、期待与您交流! ----------

异常体系:

   Throwable

      |--Error

      |--Exception

          |--RuntimeException

异常体系的特点:异常体系中所有建立的类以及对象都有可抛性,即可以被throwthrows操作,只有异常体系具备这个特点

throwthrows的用法:

throw定义在函数内,用于抛出异常对象。

throws定义在函数上,可以抛出多个,用逗号隔开。

当函数内有throw抛出异常对象未进行try处理,必须在函数上声明,否则编译失败。

注:RuntimeException除外,即函数内抛出RuntimeException异常,函数上可以不用声明。

如果函数声明了异常,则调用者需要进行处理:throwtry

-----------------------------------------------------------------------------------

异常有两种:

编译时异常

该异常在编译时,如果没有进行处理(没有throw也没有try),编译失败

该异常被标识,代表可以被处理。

运行时异常(编译时不被检测)

该异常发生建议不处理,让程序停止,需要对代码进行修正。

异常处理语句:

try

{

需要被检测的代码;

}

catch ()

{

处理异常的代码;

}

finally

{

一定会执行的代码;

}

有三种结合方法。

注:

1finally中定义的通常是关闭资源的代码,因为资源用完必须释放。

2finally只有一种情况不会执行到。(执行到System.exit(0);)。

---------------------------------------------------------------------------------------------

自定义异常:

定义类继承Exception或者RuntimeException

1,为了让该自定义类具备可抛性。

2,让该类具备操作异常的共性方法。

当要定义自定义异常的信息时,可以使用父类已经定义好的功能。

将异常信息传递给父类的构造函数

class MyException extends Exception

{

MyException(String message)

{

super(message);

}

}

自定义异常:按照java的面相对象的思想,将程序中出现的特有问题进行封装。

----------------------------------------------------------------------------------------------

异常的好处:

1,将问题进行封装

2,使正常流程代码与问题处理代码相分离,方便阅读。

异常的处理原则:

1,处理方式有两种:trythrow

2,调用到抛出异常的功能时,抛出几个就处理几个

一个try对应多个catch

3,多个catch,父类的catch放到最下边。

4catch内需要定义针对性的处理方式,不要简单的定义printStackTrace,输出语句,也不要不写。

当捕获到的异常,本功能处理不了时,可以继续在catch中抛出。

try

{

throw new AException();

}

catch (AException e)

{

throw e;

}

如果该异常处理不了,但并不属于改功能出现的异常,可以将该异常转换后再抛出和该功能相关的异常。

如果该异常可以处理,但需要将异常产生的和本功能相关的问题提供出去让调用者知道,并处理,

也可以将捕获异常处理后,转换新的异常。

try

{

throw new AException();

}

catch (AException e)

{

//dui AException处理。

throw new BException();

}

------------------------------------------------------------

异常的注意事项

在子父类覆盖时:

1,子类抛出的异常必须是父类的异常的子类或子集。

2,如果父类或借口没有异常抛出时,子类覆盖出现异常只能try(即处理掉)不能抛。

例:

老师用电脑上课

class LanpingException extends Exception
{
	LanpingException(String message)
	{
		super(message);
	}
}
class MaoyanException extends Exception
{
	MaoyanException(String message)
	{
		super(message);
	}
}
class NoplanException extends Exception
{
	NoplanException(String message)
	{
		super(message);
	}
}

class Computer
{
	private int state=3;
	public void run()throws LanpingException,MaoyanException
	{
		if(state==2)
			throw new LanpingException("蓝屏");
		if(state==3)
			throw new MaoyanException("冒烟");
		System.out.println("运行");
	}
	public void reset()
	{
		state=1;
		System.out.println("重启");
	}
}
class Teacher
{
	private String name;
	private Computer c;
	Teacher(String name)
	{
		this.name=name;
		c=new Computer();
	}
	public void prelect()throws NoplanException
	{
		try
			{
				c.run();
			}
		catch (LanpingException e)
		{
			c.reset();
		}
		catch(MaoyanException e)
		{
			test();//test功能写在抛前边,因为抛出异常程序就停止了。
			throw new NoplanException("课时无法继续"+e.getMessage());
		}
		System.out.println("讲课");
	}

	public void test()
	{
	 System.out.println("练习");
	}
}
class ExceptionTest1
{
	public static void main(String[] args)
	{	
	Teacher t=new Teacher("毕老师");	
	try	
		{	
			t.prelect();	
		}	
	catch (NoplanException e)	
		{	
			System.out.println(e.toString());
			System.out.println("换老师");	
		}	
	}
}

 

图形面积

有一个圆形和长方形。

都可以获取面积。对于面积如果出现非法的数值,市委是获取面积出现问题(异常)。

程序基本设计。

class  NoValueException extends RuntimeException//自定义异常类可以方便阅读
{	
	NoValueException(String message)	
	{	
		super(message);	
	}	
}
interface Shape
{	
	void getArea();
}
class Rec implements Shape
{
	private int len,wid;
	Rec(int len,int wid)
	{
		if(len<=0||wid<=0)
			throw new NoValueException("出现非法值");
		this.len=len;
		this.wid=wid; 
	}
	public void getArea()
	{
		System.out.println(len*wid);
	}
}
class Circle implements Shape
{
	private int radius;
	public static final double PI=3.14;
	Circle(int radius)
	{
		if(radius<=0)
		throw new NoValueException("非法");
		this.radius=radius;
	}
	public void getArea()
	{
		System.out.println(radius*radius*PI);
	}
}
class ExceptionTest
{
	public static void main(String[] args)
	{
	Rec r=new Rec(3,3);
	r.getArea();
	Circle c=new Circle(-3);
	c.getArea();
	System.out.println("执行结束");
	}
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值