您的位置:首页 > 编程语言 > Java开发

码讲——Java异常

2015-07-01 22:51 417 查看
//=====================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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: