您的位置:首页 > 其它

Error 、Exception 以及如何处理

2016-07-16 16:36 176 查看
一般有三种错误: 语法错误   运行错误  逻辑错误

语法错误:  是因为没有遵守语言的规则,在编译阶段由编译器检查发现出错的位置和原因,容易改正。
逻辑错误:程序没有按照预期的执行,着就是程序员编码的问题了。
运行错误:环境发现一个不可能执行的操作。就会出现运行错误。

这篇博客主要总结:对于 运行错误 如何处理。一般用异常处理来处理运行错误。

运行错误就会引起异常。当异常产生时,正常的程序执行流程就会中断。
没有异常捕获和处理代码的程序会非正常终止,是非常严重的。

那这么办呢?
java 给程序员提供了处理运行异常的功能,
java 运行程序捕获和处理异常。try catch  finally
try 块 一关键字try 开始后面跟花括号{}括起来的语句块,try块中包含了可能抛出异常的语句。
catch块以关键字catch开始,后面跟圆括号中的异常参数和花括号中的处理异常的语句块。

try{
     statements
}
catch(Exception1 exVal1){
    handler for exception1;

}
catch(Exception2 exVal2){
    handler for exception2;

}
catch(Exception3  exVal3){
    handler for exception3;

}
当在执行try块的过程中没有出现异常,就跳过catch字句
try块中的某条语句抛出异常, try 块语句就会被跳过,控制就转移到catch块中。
开始为该异常搜索处理代码,处理异常的代码成为异常处理器(exception handler)。
通过方法链向或开始搜索,查找处理代码,从第一个到最后一个逐个检查catch块,看那个catch块中的异常类实例
与该异常的类型匹配。
 如果都没有发现异常处理器。那就把异常传递给调用该方法的方法,继续同样的过程来查找异常处理器。
如果在调用的方法里还是查找不到异常处理器,程序终止并在控制台输出错误信息。

java的异常处理模型基于三种操作: 
1、申明异常(declaring an exception)
2、抛出异常(throwing an  exception )
3、捕获异常(catching an exception)

java不要求在方法中显示地申明error和RuntimeException,然而,如果方法要抛出其他异常,必须在方法申明中显式地说明
以便通知方法的调用者。

在方法中使用关键字throws可以申明异常,抛出异常的的关键字throw
public void myMehod() throws IOException
关键字throws 指出myMethod方法有可能抛出异常IOException。
如果方法可能抛出多个异常,可以砸关键字 throws后添加一个
异常列表,异常之间用逗号分隔。
public  void  myMethod() throws Exception1, Exception2,0 

java 的异常是Throwable派生类的一个实例,而Throwable类包含在java.lang中,
异常(exception)是由Exception类描述的。
Exception 类描述由程序和外部环境引起的错误,这些错误通过程序捕获和处理。

try{
    .....

}
catch( RuntimeException ex){
    ....

}
catch(Exception ex){
    ....

}
在catch 块中指定异常的顺序非常重要的,如何父类的catch块出现在子类的catch块前,就会导致编译错误。
RuntimeException 是 Exception的一个子类 ,所以必须在前面。
列如:Throwable是 Exception类和Error类的父类,Exception类和Error类各自又有自己的子类。



抛出的异常 其实是Throwable派生类的一个实例。

如何从异常获取信息呢?
异常对象包含有关异常的有价值的信息,可以利用java.lang,Throwable类中的下列实例方法获取异常信息
getMessage():         返回该对象的信息。
printStackTrace(): 方法在控制台上输出栈跟踪信息,
getStackTrace():    方法 返回跟踪元素的数组。

  


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: