黑马程序员技术交流社区
标题: 异常和递归 [打印本页]
作者: zjj5669436182 时间: 2017-12-16 21:31
标题: 异常和递归
异常和递归
作者:一衡
今天主要学习了异常和异常的处理方式和递归。
一、异常体系
Java代码在运行时期发生的问题就是异常。
异常的体系结构:
Throwable(最顶层)
Error:出现的不能够处理的严重问题
Exception:可以处理的问题
Exception有继承关系,它的父类是Throwable。Throwable是Java 语言中所有错误或异常的超类,即祖宗类。
二、Exception
Exception是异常的根类是一个具体类。
Throwable类,异常Exception平级的有一个Error,它是Throwable的子类,它用来表示java程序中可能会产生的严重错误。解决办法只有一个,修改代码避免Error错误的产生。
在异常Exception类中,有一个子类要特殊说明一下,RuntimeException子类,RuntimeException及其它的子类只能在Java程序运行过程中出现。
三、异常处理。
1、JVM的默认异常处理。
如果出现异常我们没有处理,jvm会帮我们进行处理,他会把异常的类型,原因还有位置显示在命令行并且还终止了程序,异常后面的代码将不在执行。
2、try...catch的方式异常处理(捕获)。
try {
//需要被检测的语句。
}
catch(异常类 变量) { //参数。
//异常的处理语句。
}
finally {
//一定会被执行的语句。主要用于清理垃圾和释放内存
}
A、可以有多个catch语句。就可以进行多个异常的处理
其中catch异常书写Exception e时可以表示任何运行异常
B、多个catch之间可以有子父类
平级之间没有顺序关系
如果有子父类,父类异常必须放在后面
3、throws方式处理异常(异常抛出)
格式:
权限修饰符 返回值类型 方法名(形参列表) throws 异常类型1,异常类型2….{}
String getMessage() 返回此 throwable 的详细消息字符串
String toString() 返回此 throwable 的简短描述
void printStackTrace() 打印异常的堆栈的跟踪信息
4、编译时异常&运行时异常
A: 编译时期异常:是Exception的子类,非RuntimeExcpetion的子类,在编译时期必须处理
B:RuntimeException和他的所有子类异常,都属于运行时期异常。NullPointerException,ArrayIndexOutOfBoundsException等都属于运行时期异常.
运行时期异常的特点:
方法中抛出运行时期异常,方法定义中无需throws声明,调用者也无需处理此异常
运行时期异常一旦发生,需要程序人员修改源代码.
5、自定义异常
如何自定义一个异常类呢?
非常简单,写一个类去继承Exception或者RuntimeException,然后实现多个构造即可。
三、递归
1、递归,指在当前方法内调用自己的这种现象
public void method(){
System.out.println(“递归的演示”);
//在当前方法内调用自己
method();
}
递归需要注意1、一定要有出口(内存溢出)
2、递归次数不宜过多(内存溢出)
2、斐波纳挈数列
代码表示
Public static int getNumber(int x){
if(x ==0){
return 0
}
if(x ==1 && x==2){
return 1 ;
}else {
return getNumber(x-1)+getNumber(x-2);
}
}
作者: 陈文老师 时间: 2017-12-17 08:54
作者: xiongliu 时间: 2017-12-17 09:20
666666666666666666666666
作者: 花开的季节 时间: 2017-12-17 09:22
加油,继续努力!
作者: 1414225997 时间: 2017-12-18 09:09
厉害了
作者: 渝小妹 时间: 2017-12-19 10:56
不错不错 杠杠的 加油
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |