J2EE(大三上学习后整理-未认真排版)(1)异常

这是我第四次写博客,我是信息管理与信息系统专业的学生,这几年以来大大小小的通过csdn学习到很多知识。之前一直想坚持写博客,但是却没有付出真正的行动,想要借着这次期末复习的机会把我本学期所学习到的有关Java的一些知识分享给大家。与此同时本人也要迈着沉重的步伐去追逐自己的梦想了,考研真的时太难了,未来一年的日子里希望csdn可以陪伴我一直走下去,最后我也希望各位大佬可以多多指导我,感谢~~~~

  1. 推荐书目以及视频资源(博客写完之后会整理好分享给大家)
  2. 安装所需软件以及配置环境(最后)
  3. Java基础语言知识(这一部分一笔带过,放在最后一部分吧,毕竟这个我已经考完了,最重要的是J2ee和jsp以及JavaWeb那里)
  4. J2ee编程(从异常开始)
  5. jsp基础应用
  6. java-Web基础应用
  7. MySQL学习(这一部分我要和大家一起学习,因为之前学习的数据库是SQL Server版本的,二者在不同程度上有着一定的区别与联系,所以也要学习一下)

异常(以学生-大学生例题进行试验)理论知识参考尚学堂

1.介绍
在没有异常之前:
使用if~else进行伪代码处理;
坏处:逻辑代码和错误处理放在一起;
程序员需要考虑的例外情况较为复杂;
使用异常处理:
本质:程序出现错误,安全退出机制;
Java是采用面向对象的方法来处理异常的,处理过程包括:
(1)抛出异常:在执行一个方法时,若发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并且把异常对象交给Jre;
(2)捕获异常:jre得到该异常后,寻找相应的代码来处理异常,jre在方法中的调用中进行查找,从生成的异常的方法开始回溯,直到找到相应的异常处理代码为止,当然我们也可以手动进行异常处理,例如:

System.out.println(1/0);//算数异常

2.异常分类
注意:所有异常的根类都是java.lang.Throwable
*1.error(这一类异常通常是JVM崩溃,一般情况下不用管)*也就是unchecked Exception
2.Exception包括两类
(1)checked Exception
(2)Runtime Exception,它包括Unchecked Exception
Runtime Exception:多数是逻辑错误,例如:被零除、数组下标越界、空指针
**NullPointException**空指针异常
例如:

String str = null;
if(str!=null){//保证检查对象不为空时再执行
str.length();
}

**ClassCastException**强制转型异常
例如:

Animal d = new Dog()if( d instanceof Cat){//检查
Cat c = (Cat)d;
}

**ArrayIndexOfBoundException**数组溢出异常

int [] arr = new int[5];
int a = 5;
if(a<arr.length){//检查长度
System.out.println(arrr[a]);
}

**CheckedException**已经检查异常(所有不是运行时异常的都属于此类),编译时进行报错,必须要做出处理,否则无法通过编译;
处理方式:利用try/catch进行异常捕获;thorw进行抛出
注意:catch可以有多个,但是finally只能有一个,提供统一接口。子类在前抛出,父类在后抛出;
例如:

import java.io.FileNotFoundException;
import java.io.Exception;
import jaava.io.IOException;
public class Test{
   public static void main(String[]args){
  FileReader reader = null;
  try{
  reader = new FileReader("d:/a.txt");
  char c = (char) reader.read();
  char c2 = (char)reader.read();
  System.out.println(""+c+c2);
  }catch(FileNotFoundException e){
    e.printStackTrace();
  }catch(IOException e){
    e.printStackTrace();
  }finally{
  try{
  if(reader!=null){
  reader.close();
  }
  }catch(Exception e){//逐级向上抛出
  e.printStachTrace();
  }
  }
   }
  }
}

3.自定义异常继承运行时异常和编译时异常
例如:

class IllegalA个Exception extends RuntimeException{
public IllegalAgeExceptionn(){}
public IllegalAgeException(String msg){
super(msg);
  }
}
if(age<0){
throw new IllegalAgeException(....);
}else{
this.age = age;
}

4.总结

  • 异常通常由高层进行处理:谁调谁处理;
  • 避免使用异常处理代替异常处理错误处理;
  • 不要进行小粒度异常处理;
  • 处理异常不可以代替简单测试;

5.实验例题
源代码

package Exception;
/*(1) 定义一个Student类;
成员变量:学号、姓名、年龄;
成员方法:获得学号、获得姓名、获得年龄、修改年龄;
定义构造方法:初始化所有成员变量,
定义方法public String toString():将所有信息组合成一个字符串;
定义主类TestStudent,在其中创建Student类的对象,检验其功能。
(2)定义一个CollegeStudent类,并描述出其与Student类之间的关系,
成员变量:实习单位、所学专业;
成员方法:将大学生的基本信息和专业、实习信息输出;
在TestStudent类中创建CollegeStudent类的对象,检验其功能。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191222150444243.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hod18xOTk4MTIwNQ==,size_16,color_FFFFFF,t_70)






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值