异常的概念:
异常(exception也称例外)就是在程序运行过程中所发生的不正常的事情,
他会终止程序的运行。
1.所需的文件找不着
2.网络连接不通或者中断
3.算数运算符的错误参数
4.数组下标越界
5.装载一个不存在的类或者null对象操作
6.类型转换异常...
当java程序出现以上异常的时候就会在所处方法中产生一个异常的对象
这个异常的对象包括异常的类型,异常出现时程序的运行状态以及该异常的详细我描述
在java程序中所有异常和error的父类是Throwable直接继承Object
error是程序本身无法恢复的严重错误
exception是程序中可以处理的异常
1.运行时异常(有可能产生也有可能不产生)
2.Check的异常(不处理编译无法通过,也叫编译时异常)
异常的处理方式之捕捉异常:
1.try -catch- finally的使用
1-try-catch组合
1--正常情况:try 及以后的代码,不执行catch
2--异常情况:出现类型和捕获类型相匹配
catch(exception e){//
e.printstackTrance();
}
再捕捉到异常的时候由java虚拟机创建对象,体现了多态,父类引用指向子类对象
Exception e = new ArithmeticException();然后继续执行以后程序,程序不会中断
3--异常不匹配情况:异常exception e不匹配,程序中断,后面程序就不在运行。
2-try-finally组合;
1--正常情况:程序正常运行,执行finally代码
2--异常情况:在执行完毕finally代码之后程序报错,程序中断
3--特殊情况不执行finally:system.exit(0);
3-try-catch-finally
1--正常情况:执行try-finally
2--异常情况:类型相匹配执行try-catch-finally 按顺序执行
3--异常情况:类型不相匹配,执行try-finally
如果catch中存在return语句则先执行完finally语句后再执行return语句(结束方法)
异常的处理方式之声明异常:(throws)
方法名的后面,用于声明该方法可能会产生一个异常,如果方法声明的
是一个Exception异常或者是checkedException异常,要求方法的调用出必须做处理
1.继续使用throws向上声明(方法的调用处)
2.使用try-catch-finally进行处理
如果方法声明但是runtimeException的异常,那么方法的调用可不处理
继承关系中的声明异常:
1.父类的方法声明了Exception类型的异常,子类再重写方法的时候,可以声明
也可以不声明,但是如果子类重写之后的方法使用super关键字调用父类的方法,
那么必须要求对异常进行处理。
2.如果父类方法没有异常,那么子类的方法如果一定要有Exception异常或者是checkedException异常
那么子类必须自己进行try-catch-finally解决或者给父类声明异常。
3.如果子类在重写父类方法是产生的是runtimeException那么也可以不用处理
throw抛出异常对象写在方法里
在捕获一个异常之前必须有一段代码先生成异常对象并把它抛出,这个过程我们
可以手工做也可以由JRE来实现,他们调用的都是Throw子句
throws与throw的区别
1.throws用于声明方法可能会产生的类型异常,throw手动抛出一个异常对象!!
2.位置不相同,throws写在方法名后面,throw用于写在方法里。
常见的异常和解决方法(加入判断)
1.运行时异常runtimeException
1-算术异常:ArithmeticException(除数不为0)
2-空指针异常:NullPointerException(没有创建对象就调用了对象的属性或方法String str=nul;)
3-类型转换异常;ClassCastException(向下类型转换Animal dog = new Dog Cat cat = (cat)dog
用instanceof判断是否属于一个类型返回boolean)
4-数组下标越界异常:ArraysIndexOutOfBoundsException(判断是否<arr.length
否则输出数组下标超出边界)
5-期望的数据类型和实际输入的类型不匹配:InputMismatchException!!!(判断输入的是否是整数
的时候用input.hasNextInt(),判断你输入的时候是否是整数)
2.检查时异常CheckedException(必须做处理n多异常的总称)
1-SQLException(throws向上声明或者使用try-catch-finally)
2-IOException(throws向上声明或者使用try-catch-finally)
3-ParseException(throws向上声明或者使用try-catch-finally)
自定义异常:
为什么要定义自定义异常?
在程序中,可能会遇到任何标准异常类都无法描述清楚的问题,这种情况下创建自己的
异常类
自定义异常的步骤:!!!
1.继承Exception或者RuntimeException
2.定义构造方法
3.使用异常