文档章节

Java基础10

DouDouLee
 DouDouLee
发布于 2016/05/09 16:57
字数 560
阅读 50
收藏 0

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

 

© 著作权归作者所有

共有 人打赏支持
DouDouLee
粉丝 6
博文 95
码字总数 45242
作品 0
西安
加载中

评论(1)

l
limenghang
APKBUS是一家服务于中国移动开发者学习与成长需要的综合社区服务平台,专门为开发者提供最优质的资源服务、最完善的信息共享平台!http://www.apkbus.com/forum.phpcode4app 全国最大的 iOS 源代码收集平台,汇集近 5 千份优质代码。为开发者造轮子,提高开发者朋友的工作效率。 http://www.code4app.com
大数据开发培训:0基础学习Java编程语言有哪些知识点?

Java 技术通用、高效、具有平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网等,学习Java首先要知道学习知识点有哪些。在这就用加米谷大数据培训...

加米谷大数据
07/25
0
0
学习大数据需要Java基础吗?

近几年,很多人都听到过一个名词“大数据”也有一部分人选择学习了解大数据,那么大数据到底是什么,学习大数据需要有Java基础吗? 推荐一个大数据学习交流群 119599574每天晚上20:10都有一节...

大数据大咖
06/10
0
0
JAVA基础再回首(三十)——JAVA基础再回首完美结束,感概万千!

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m366917/article/details/52724939 JAVA基础再回首(三十)——JAVA基础再回首完美结束,感概万千! 经过了几...

Aduroidpc
2016/10/02
0
0
几周内搞定Java的10个方法

不要将Java与JavaScript弄混了,Java的目标是“一次编译,到处调试”(呃,不对,是“到处运行”)。简单来说,就是Java程序可以直接在任何设备上运行。 Java语言是什么? 不管我们是否意识到...

拉偶有所依
2015/03/11
0
0
你所需要的java提升篇大总结

java基础篇深入解析大总结 java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规则 java基础(三) 加强型for循环与Iterator java基础(四) java运算顺序的深入解析 java基础(五) Str...

sihailoveyan
04/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

自定义Ubuntu/Windows双系统引导菜单主题

学习Linux自然少不了要装双系统,其中Ubuntu便是我们用的最多的Linux系统。装完双系统后,Ubuntu会自动生成grub开机引导及菜单,及其丑陋,而且很多我们用不到的选项。今天我们就介绍burg:修...

Linux就该这么学
14分钟前
0
0
Go 并发(二)

Go Mutex 通过Mutex和信道处理竞态条件。 临界区 当程序并发运行时,多个协程不应该同时访问那些修改共享资源的代码,这些修改共享资源的代码称为临界区。 Go中通过Mutex可以避免同时访问临界...

春哥大魔王的博客
17分钟前
0
0
CentOS 7安装和部署Docker

Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。通过 uname -r 命令查看你当前的内核版本 uname -r3.10.0-514.el7.x86_64 1、...

狼王黄师傅
21分钟前
0
0
php扩展可以通过pecl 或者phpize 安装

pecl 算是 php 扩展的一个官方聚合平台,一些比较有名,有特点的扩展会被 pecl 收录,收录后可以通过 pecl 的方式安装。但是更多的扩展是没有收录在 pecl 上的,这些扩展还是需要通过 phpize...

bengozhong
21分钟前
0
0
CentOS中如何安装7ZIP

执行以下命令下载安装: wget http://nchc.dl.sourceforge.net/project/p7zip/p7zip/9.20.1/p7zip_9.20.1_src_all.tar.bz2tar -jxvf p7zip_9.20.1_src_all.tar.bz2cd p7zip_9.20.1make......

凯文加内特
27分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部