【Java】异常

//=====================java异常处理=================
public class ExceptionDemo {
	private static final long LEVEL = 20150701;
	/*
	 * 基本异常处理
	 */
	//@Test
	public void test1(){
		FileInputStream in =null;
		System.out.println("start");
		try{
			String str1 = null;
			System.out.println(str1.length());//发生空指针异常
			String str2 = "";
			System.out.println(str2.charAt(0));//越界异常
			System.out.println("不会被执行");//发生异常之后,catch之前的语句不会被执行
			//try内定义的局部变量的作用域只在try中,finally中也不能访问,所以应定义在try外面
			in = new FileInputStream("test.txt");
		}catch(NullPointerException e){//捕获异常时子类应始终先于父类捕获
			System.out.println("捕获空指针异常");
		}catch(StringIndexOutOfBoundsException e){//可写多个catch捕获多个异常
			System.out.println("捕获下标越界异常");
		}catch(Exception e){//应习惯性的总是在最后捕获Exception,防止出现未捕获的异常
			System.out.println("捕获其他未处理的异常");
		}finally{//通常进行资源的释放工作如关闭打开的文件,删除临时文件 可以直接写在try后
			System.out.println("finally始终都会执行");
			try {
				in.close();//通常使用静态类封装close方法,在那里进行异常的捕获
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		System.out.println("end");//catch之后的语句会得到执行,没有try则不会执行
	}
	/*
	 * throw通常用于     反馈
	 * 1、当遇到类满足语法要求,但是不符合业务逻辑要求时,抛出异常,让调用者解决。(你要解决这个问题)
	 * 2、当前代码遇到异常,但是不负责解决,而是应当将异常反馈给调用者时(你要知道这里出了这个问题)
	 */
	@Test
	public void test2(){
		Person p = new Person();
		p.setAge(1000);
		System.out.println(p.getAge());
	}
}
class Person {
	int age;

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		if(age<0||age>100){
			throw new RuntimeException("wrong age");
		}
		this.age = age;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xerophyte000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值