黑马程序员-学习日记
黑马程序员_JAVA中的异常
------- android培训、java培训、期待与您交流! ----------
一:异常:程序出现的不正常的情况就是异常。
在java中异常结构体系的超类基类是Throwable;
二:Trowable:
Error:指的是严重的问题,严重到影响程序的执行。这个问题,不做异常处理。
因为一般出现的问题,处理不了。比如说:内存溢出。必须通过修改程序来解决。
Exception:一般的程序问题,必须通过异常处理的。
三:main方法如何处理异常:
1:main里面如果没有处理异常,那么jvm会采用默认处理方式。
2:自己写代码处理
A:try...catch...finally 捕获处理异常。
基本格式:
try
{
可能出现异常的代码;
}
catch(异常对象)
{
异常的处理方式;
}
finally
{
释放资源;
}
变形方式:
try...catch
try...catch...catch...
try...catch...catch...fianlly
try...finally 没有对异常进行处理
注意:在try对应多个catch时,catch中的异常的书写顺序:如果异常为平级的顺序可以打乱;如果异常存在着子父类关系,则异常书写顺序是将最子类的异常写在方法中的最上边。
B:throws 抛出异常
C:Throwable中的三个方法:
String getMessage():获取异常的信息
void printStackTrace():获取异常的堆栈信息
String toString():或者异常字符串的描述,其实是覆盖了Object中的同toString方法;
四:自定义异常:在方法中用throw关键字类抛出
自定义的异常要继承Exception或者RuntimeException;
代码体现:
class MyException extends Exception或者RuntimeException
{
private String message;
MyException(){}
MyException(String message){
super(message);
}
MyException(String message,int num){
super(message);
this.num = num;
}
public int getNum(){
return num;
}
}
五:RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。
可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。也就是说在自定义异常的时候如果继承的是Exception体系,在自定义方法上必须声明自定义异常。
六:throw和throws的区别:
A:有throws的时候可以没有throw;但如果 throw抛得异常是Exception体系除RuntimeException外的,必须用throws在方法上声明。
B:throws 后边声明的是异常类名;throw后边声明的是自定义异常对象名;
七:Exception和RuntimeException的区别
A:Exception:一般性的错误,是需要我们编写代码进行处理的。
B:RuntimeException:运行时异常,这个我们也不需要处理。
其实就是为了让他在运行时出问题,然后我们回来修改代码。
在用throws抛出一个的时候,如果这个异常是属于RuntimeException的体系的时候,我们在调用的地方可以不用处理。(RuntimeException和RuntimeException的子类)在用throws抛出一个的时候,如果这个异常是属于Exception的体系的时候,我们在调用的地方必须进行处理或者继续抛出。
八:finally代码块:
finally永远被执行,除非退出JVM时,也就是先了执行System.exit(0);
九:finally,final,finalize的区别?
final是一个修饰符,可以修饰类(修饰类后类变成最终类不可以被继承),变量(修饰后成为一个常量),和方法(被修饰后的方法不可以被复写);
finally是异常处理里面的关键字,他其中的代码块永远被执行,除非先执行了System.exit(0);
finalize是Object里的一个方法,他是垃圾回收器调用的方式。
假如catch中有return语句, finally里中的代码会在return前执行。
十:可以同时抛出多个自定义的异常;在自定义异常时建议继承RuntimeException。
------- android培训、java培训、期待与您交流! ---------- 详细请查看:http://edu.csdn.net/heima/