Java基础10
Java基础10
DouDouLee 发表于2年前
Java基础10
  • 发表于 2年前
  • 阅读 50
  • 收藏 0
  • 点赞 2
  • 评论 1

移动开发云端新模式探索实践 >>>   

摘要: 异常处理的原理、运行时异常和普通异常

1、异常处理的原理

异常是指程序运行时(非编译时)所发生的非正常情况或错误。当程序违反了语义规则(包括两种情况:1)Java类库内置的语义检查,如当数组下标越界就会引发IndexOutOfBoundsException;当null的对象时会引发NullPointerException;2)开发人员自己创建的异常类)时,JVM就会将出现的错误表示为一个异常并抛出,这个异常可以在catch程序块中捕获然后处理。异常处理的目的是增强程序的安全性与鲁棒性。

2、运行时异常和普通异常

Java提供两种异常类Error和Exception,且他们有共同的父类Throwable。

Error表示程序在运行期间出现了非常严重的错误,且错误是不可恢复的,JVM层次的严重错误,这种错误会导致程序终止。不推荐去捕获Error,因为Error通常是由于逻辑错误导致,属于应该解决的错误。

Exception表示可恢复的异常,是编译器可以捕捉到的,有两种类型:检查异常(checked exception)和运行时异常(runtime exception).

1)检查异常

通常发生在编译阶段,比如常见的IO异常和SQL异常,Java编译器会强制程序去捕获此类型的异常,即把可能出现的异常放到 try块中,把对异常的处理放在catch中。

2)运行时异常,编译器没有强制去处理,当出现这种异常时由JVM处理,最常见的异常有:NullPointerException/ClassCastException/ArrayIndexOutOfBoundsException/ArrayStoreException/BufferOverflowException/ArithmeticException等。出现运行时异常时,系统会把异常一直向上层抛出,直到遇到处理代码为止。

package twelve;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.logging.Logger;
//exercise3 exercise7
public class ArrayIndexOutOfBound3 {
 private static Logger logger = Logger.getLogger("ArrayIndexOutOfBound3");
 static void logException(Exception e){
  StringWriter trace = new StringWriter();
  e.printStackTrace(new PrintWriter(trace));
  logger.severe(trace.toString());
 }
 public static void main(String[] args){
  int[] a = new int[]{1,2,3,4};
  try{
   for(int i = 0;i < 10;i++){
    System.out.print(a[++i]);
   }
  }catch(ArrayIndexOutOfBoundsException e){
   //e.printStackTrace();
   logException(e);
  }
 }
}/* 
24java.lang.ArrayIndexOutOfBoundsException: 5
 at twelve.ArrayIndexOutOfBound3.main(ArrayIndexOutOfBound3.java:9)*/
/*加log后
 * 24四月 14, 2016 6:05:57 下午 twelve.ArrayIndexOutOfBound3 logException
严重: java.lang.ArrayIndexOutOfBoundsException: 5
 at twelve.ArrayIndexOutOfBound3.main(ArrayIndexOutOfBound3.java:19)
 * */

 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 6
博文 91
码字总数 45242
评论 (1)
limenghang
APKBUS是一家服务于中国移动开发者学习与成长需要的综合社区服务平台,专门为开发者提供最优质的资源服务、最完善的信息共享平台!http://www.apkbus.com/forum.phpcode4app 全国最大的 iOS 源代码收集平台,汇集近 5 千份优质代码。为开发者造轮子,提高开发者朋友的工作效率。 http://www.code4app.com
×
DouDouLee
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: