博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java基础10
阅读量:5874 次
发布时间:2019-06-19

本文共 1763 字,大约阅读时间需要 5 分钟。

hot3.png

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 exercise7public 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) * */

 

转载于:https://my.oschina.net/doudoulee/blog/672316

你可能感兴趣的文章
python学习——函数及其参数
查看>>
视图、索引、存储过程优缺点
查看>>
百度地图接口调用
查看>>
javascript正则表达式<一>
查看>>
WCF学习笔记
查看>>
CQRS
查看>>
MySQL - 行锁 表锁 乐观锁 悲观锁 读锁 写锁
查看>>
如何解决iOS界面操作导致导致NSTimer暂停计时的问题?
查看>>
Mac os x 系统的发展史
查看>>
WinForm基础
查看>>
初学类和对象
查看>>
XML 反序列化为Model
查看>>
一些感想
查看>>
SDL2 undefined reference to `SDL_Init' 问题
查看>>
蓝天集团董事长郎凤娥专访
查看>>
类成员与方法访问控制从严
查看>>
JSF是什么?它与Struts是什么关系?
查看>>
51 nod 1405 树的距离之和
查看>>
BZOJ 2733: [HNOI2012]永无乡
查看>>
spring 线程安全
查看>>