异常

1.try…catc和throws的用法:
throws exception 用于标识一个方法可能会出现异常;
trycatch用于处理可能发生异常的语句,
对于可能发生异常的语句,java有两种对待方式,try。。catch 或者throws 抛出给它的调用者,若在主函数中,则抛给虚拟机,虚拟机处理异常的方式类似于e.printstacktrace(),即打印完整的异常信息,两种方式异常后面的语句都将不再执行,相当于中断了。若没有发生异常,则catch后的语句不执行。
2.抛出几个异常,就写几个catch块,不要写多余的catch块;
若多个异常之间存在继承关系,则把父类异常写在最后面,因为只能选择一个catch块运行。
3.自定义的异常
package yichang;

/class Exception{
String message;
Exception(String msg)
{
this.message=msg;
}
String getMessage()
{
return message;
}
}
/
class FushuException extends Exception{
int value;
FushuException(String msg,int b)
{
super(msg);
this.value=b;
}
public int getValue()
{
return value;
}
}
class Count1{
static double jisuan(int a,int b) throws FushuException
{
if(b<0)
{
throw new FushuException(“出现了负数异常!”,b);
}
return a/b;
}
}
public class Demo02 {
public static void main(String[] args) {
try{
Count1 c=new Count1();
double cc=c.jisuan(4,-1);
System.out.println(cc);
}catch(FushuException e)
{
System.out.println(e.toString());
System.out.println(“负数是:”+e.getValue());
}
System.out.println(“over”);
}
}
4.异常分为两类:
编译时检测的异常,如果抛出,则必须处理
运行时的异常,RuntimeException和它的子类(算术异常、指针越界异常、空指针异常等),因为此处的异常会导致后面的程序无法进行,所以要让程序停下来,所以这类异常不用抛出也不用处理。
5.重要练习:毕老师在讲课,电脑蓝屏或者冒烟了,张老师处理不了冒烟,所以把冒烟转换成了“无法继续上课”的异常,这样张老师就可以处理了。
package yichang;
class Interruption extends Exception{
Interruption(String msg)
{
super(msg);
}
}
class Lanping extends Exception{
Lanping(String msg)
{
super(msg);
}
}
class Maoyan extends Exception{
Maoyan(String msg)
{
super(msg);
}
}
class Computer{
int state=3;
void run() throws Lanping,Maoyan
{
if(state2)
{
throw new Lanping(“电脑蓝屏”);
}
if(state
3)
{
throw new Maoyan(“电脑冒烟”);
}
System.out.println(“电脑运行”);
}
void reset()
{
state=1;
System.out.println(“电脑重启”);
}
}
class Teacher{
String name;
Computer com;
Teacher(String name)
{
this.name=name;
com=new Computer();
}

void pteach() throws Interruption
{
	try {
		com.run();
	} catch (Lanping e) {
		com.reset();
	}catch(Maoyan e)//将电脑冒烟转换成我自己的异常,调用者就有办法处理了。
	{
		System.out.println(e.getMessage());
		throw new Interruption("无法继续上课");
	}
	System.out.println("讲课");
}

}
public class Practice {
public static void main(String[] args) {
Teacher t=new Teacher(“毕老师”);
try {
t.pteach();
} catch (Interruption e) {
System.out.println(e.getMessage()+“换老师或者放假”);
}
}
}
6.重写时的异常:
子类只能重写父类的异常或父类的子异常;
子类不能抛出父类没有的异常;子类的其他异常不能抛,只能处理掉
若父类有多个异常,则子类只能抛出父类的子异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值