java中的异常[35]
一、什么是异常?
异常是阻止当前方法或作用域继续执行的问题,在程序中导致程序中断运行的一些指令;
1.throwable是异常的基类,分为Error和Exception,在编程中我们关注Exception.
2.Exception分为编译期异常(受检)和运行期异常(非受检).
3.try{…catch(){}…finally{}}:catch可以有多个,执行顺序为子类到父类,最好把小的异常放前面,如果大的异常在前面就不会执行后面的catch了;
4.throws关键字在方法的声明上使用,表示方法中不处理异常,而交给调用者处理.
5.throw关键字表示在程序中手动抛出一个异常,抛出的是一个实例化异常对象.
6.try语句不能单独存在,可以和catch,finally组成,catch语句可以有多个,finally语句只有一个.
7.try,catch,finally代码块中的变量作用域都是独立的,不能相互访问.
8.多个catch时,java虚拟机会去匹配一个异常类,匹配到之后就不会再去执行别的catch.
二、语法格式
try{//jdk1.7之后直接释放资源
代码块
}catch(异常类型 对象){
异常处理操作;
}catch(异常类型 对象){
处理
}....finally{
异常统一出口,不管怎样,都会执行的代码块,在执行return之前也会默认执行.
}
三.自定义异常
1.什么是自定义异常?
自定义异常的实现方式是提供构造方法,异常对象本身是没有实际功能,只是一个有意义的标识.
1.受检异常:Exception:定义方法时必须声明所有可能会抛出的Exception,在调用这个方法时,必须try捕获.在编程期检查
2. 非受检异常:RuntimeException:在定义方法时不需要声明会抛出RuntimeException,调用时也不需要捕获.在运行期检查.
2.代码演示
1.学生类
class Student{
private int name;
private int pwd;
public Student(int n,int p){
this.name=n;
this.pwd=p;
}
@Override
public String toString() {
return "Student{" +
"name=" + name +
", pwd=" + pwd +
'}';
}
public int getName() {
return name;
}
public void setName(int name) {
this.name = name;
}
public int getPwd() {
return pwd;
}
public void setPwd(int pwd) {
this.pwd = pwd;
}
}
2.自定义异常类
//自定义异常,继承Exception
class MyException extends Exception{
public MyException(){}
public MyException(String message){
System.out.println(message);
}
}
3.功能类
class StudentMa{
public void print(int name,int pwd)throws MyException{//抛出自定义异常
try {
if (name!=123){
throw new MyException("用户名错误!");
}else if (pwd!=123){
throw new MyException("密码错误!");
}else {
Student s=new Student(name,pwd);
System.out.println(s.toString());
}
}catch (MyException e){
System.out.println("错误");
}finally {
System.out.println("over");
}
}
}
4.创建对象实现
int a=print(8,0);
System.out.println(a);
StudentMa sm=new StudentMa();
try {
sm.print(111,123);
}catch (MyException m){
m.fillInStackTrace();
}
5.课外延伸
private static int print(int a,int b){
try {
int c=a/b;
return c;
}catch (ArithmeticException | NullException e){
System.out.println("0不能做除数");
}finally {
System.out.println("finally");
}
System.out.println("over");
return -1;
}
四.小结
本章概述了java中的异常,异常使用和自定义异常的使用,都是后面写代码必不可少的知识点,所以本章为重点
有哪里不足或者有更好的建议,欢迎留言吐槽,有哪里不懂的小伙伴,可以私信我,我会一一答复,感谢认可,感谢支持!