java异常处理机制的代码实现

Java出现异常有三种可能

1、Java语法错误(编译时发生的错误)  

2、异常(运行时发生的错误)  

3、逻辑(逻辑上错误)

异常地抛出

throws:在方法声明时使用,声明可能会抛出的一个或多个异常。

throw:在方法内使用,手动抛出一个异常对象;


package com.yc.test;
import org.apache.log4j.*;
class SnoException extends Exception{//java自带的异常类
	private String message;
	
	public SnoException() {
		System.out.println("学号应该是yc0000格式");
	}

	@Override
	public String getMessage() {//当没有输入年龄时(不过有一个缺陷,当输入年龄后,他也会输出)
		// TODO Auto-generated method stub
	return "年龄异常:年龄应该在15~28之间";
	}
}
class AgeException extends RuntimeException{
	public AgeException() {
		System.out.println("年龄应该在15~28之间!");
	}

	@Override
	public String getMessage() {
		// TODO Auto-generated method stub
		return super.getMessage();
	}
}
class Stu{
	private String sno;
	private int age;
	public String getSno() {
		return sno;
	}
	
	@Override
	public String toString() {
		return "Stu [sno=" + sno + ", age=" + age + "]";
	}

	public void setSno(String sno) throws SnoException {
		if(!sno.matches("yc[0-9]{4}"))
			throw new SnoException();//抛出异常
		this.sno = sno;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) throws AgeException{
		if(age>28||age<15)
			throw new AgeException();//抛出异常
		this.age = age;
	}
	
}
public class ExceptionDemo {
	public static void main(String []args) {
		Stu s1=new Stu();
		Logger log=Logger.getLogger(ExceptionDemo.class);//定义日志对象
		try{
			log.debug("给学生设置学号和年龄.....");
			s1.setSno("yc345");
			s1.setAge(18);//当没有setAge时不会进入AgeException方法中
		}catch(SnoException se) {
			log.warn("发生了异常:"+se.getMessage());
		}catch(AgeException ae) {
			//System.out.println(ae.getMessage());
			//log.info("发生了异常:"+ae.getMessage());
		}catch(Exception e) {
			//System.out.println("发生异常:"+e.getMessage());
			log.error("发生了异常:"+e.getMessage());
		}
		
		System.out.println(s1);
	}
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值