异常:
Java代码在运行时期发生的问题就是异常.
Exception类及其子类是Throwable的一种形式.是用来表示java程序中可能产生的异常,并要求对产生的异常进行合理的异常处理.
Exception的父类是Throwable.Throwable是java语言中所有错误或者异常的超类..
此外,Exception的子类runtimeException,RuntimeException及其子类只能在java程序运行过程中出现.即运行时异常.
Throwable的另一个子类是Error,是和Exception平级的.是用来表示java程序中可能会产生的严重错误的.解决办法只有一个,修改代码避免Error错误的发生.
Error是用于指示合理的应用程序不应该试图捕获的严重问题.
运行时异常runtimeException,可以有两种处理方式,try,,,catch捕获到异常,另一种是throws 抛出异常.
JVM默认异常的处理方式:
如果出现异常我们没有处理,jvm会帮我们进行处理,会把异常的类型,原因还有位置显示在命令行并且终止程序,异常后面的代码将不再执行.
Try..catch...finally...捕获异常:
捕获:java中对异常有针对性的语句进行捕获,可以对出现的异常进行指定方式的处理捕获异常格式.
Try{
//需要被检测的语句
}catch(异常类 变量){
//异常的处理语句.
}finally{
//一定会被执行的语句.
}
Try:语句后的代码编写可能产生异常的代码.
Catch:用来进行某种异常的捕获,实现对捕获到的异常进行处理.
Throws使用:
权限修饰符 返回值类型 方法名(形参列表) throws 异常类型1,异常类型2....{}
多异常处理方式:
对代码进行异常检测,并对检测的异常传递给catch处理,对每种异常信息进行不同的捕获处理.
Void show(){
Throw new Exception ();//产生异常,直接捕获处理
}catch(xxxException x){
//处理方式
}catch(yyyException e){
//处理方式
}catch(zzzException z){
//处理方式
}注意:这种异常处理方式,要求多个catch中的异常不能相同,并且若catch中的多个异常之间有子父类的关系,平级之间没有先后顺序.那么子类异常要求在上面的catch处理,父类异常在下面的catch处理.
Throwable常用方法:
String getMessage();返回此throwable的详细消息字符串
String toString()返回此throwable的简短描述;
Void printStackTrace();打印异常的堆栈的跟踪信息
Finally:一定是和try..catch组合一起使用的,用于释放资源等收尾工作,无论try..catch语句如何执行,finally的代码一定会执行.
Try{
有可能出现问题的代码.
}catch(异常对象){
处理异常
}finally{
释放资源;
清理垃圾.
}编译时异常 & 运行时异常
A: 编译时期异常:是Exception的子类,非RuntimeException的子类,在编译时期必须处理
B:RuntimeException和他的所有子类异常,都属于运行时期异常.NullPointerException,ArrayIndexOutOfBoundsException等都属于运行时期异常.
运行时异常的特点:
方法抛出运行时期异常,方法定义中无需throws生命,调用者也无需处理此异常运行时期异常.一旦发生,需要程序人员修改源代码.
自定义异常:
Throws:处理异常的一种方式,把异常抛出,由调用者来处理.
Throw制造异常的方式,并且结束方法
注意:如果抛出(throw)的是编译时期异常,必须在方法声明处抛出(throws)
自定义异常类: 写一个类继承Exception或者RuntimeException,然后实现多个构造即可.
算法之递归:
递归的原则:
递归一定要有出口,内存溢出.
递归次数不宜过多,内存溢出.
案例之求一个数阶乘的方法:
Public static int jC(int n){
//必须要有出口
If(n==1){
Return 1;
}
Return n * jc(n-1);
}
算法之斐波那契
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
* 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,
* 问第二十个月的兔子对数为多少?
public static int method(int n) {
//如果是第一个月,只有一对兔子
if(n == 1) {
return 1;
}
//如果是第二个月,也只有一对兔子
else if(n == 2) {
return 1;
}
else {
//如果不是第一个月和第二个月,则兔子的数量是前两个月之和
return method(n - 1) + method(n - 2);
}
}
本文介绍Java中的异常处理机制,包括编译时异常与运行时异常的区别及处理方式,并探讨了递归算法的基本原则及应用案例。
4499

被折叠的 条评论
为什么被折叠?



