这是我第四次写博客,我是信息管理与信息系统专业的学生,这几年以来大大小小的通过csdn学习到很多知识。之前一直想坚持写博客,但是却没有付出真正的行动,想要借着这次期末复习的机会把我本学期所学习到的有关Java的一些知识分享给大家。与此同时本人也要迈着沉重的步伐去追逐自己的梦想了,考研真的时太难了,未来一年的日子里希望csdn可以陪伴我一直走下去,最后我也希望各位大佬可以多多指导我,感谢~~~~
- 推荐书目以及视频资源(博客写完之后会整理好分享给大家)
- 安装所需软件以及配置环境(最后)
- Java基础语言知识(这一部分一笔带过,放在最后一部分吧,毕竟这个我已经考完了,最重要的是J2ee和jsp以及JavaWeb那里)
- J2ee编程(从异常开始)
- jsp基础应用
- java-Web基础应用
- 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)