文档章节

Java语言学习(九):异常处理

海岸线的曙光
 海岸线的曙光
发布于 07/17 15:25
字数 622
阅读 2
收藏 1

    异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。常见的三种异常类型有:

  • 检查性异常,如打开一个不存在的文件
  • 运行时异常,如数组越界
  • 错误,如栈溢出

    所有的异常类是从 java.lang.Exception 类继承的子类,Exception类是Throwable 类的子类,如下图所示:

 

    常见的非检查性异常有:数组下标越界异常ArrayIndexOutOfBoundsException、空指针异常NullPointerException等,检查性异常有:类未发现异常ClassNotFoundException,表示应用程序试图加载类时,找不到相应的类,NoSuchMethodException表示请求方法不存在等等。

    捕获异常,如下实例:

FileInputStream fis = null;
try{
   File file = new File("d:\\a.txt");
   fis = new FileInputStream(file);
}catch(FileNotFoundException e){
   e.printStackTrace();
}finally{
   try{
      fis.close(); //释放资源
   }catch(IOException e){
      e.printStackTrace();
   }
}

    上面实例中使用的捕获异常的方式是:try/catch 代码块,它的最简单的用法为:

try
{
   // 程序代码
}catch(ExceptionName e1)
{
   //Catch 块
}

    当然,也可以使用多重捕获块,即后面有多个catch块,匹配不同的异常,finally块属于可选部分,无论是否发生异常,该代码块总会被执行,这里可用来运行清理类型等收尾善后性质的语句,如资源的释放等。

    如果一个方法没有捕获一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。也可以使用 throw 关键字抛出一个异常,仅可应用在方法体中,无论它是新实例化的还是刚捕获到的。用法如下:

//throws用法
public void Fun() throws Exception{
    //throw用法
    new throw Exception();
}

    除了Java中提供的异常类,我们也可以自定义异常类,需要继承Exception类或者Exception的子类。最简单的自定义异常类如下:

public class FunException extends Exception{}

    在类中可以提供一个无参构造方法和一个字符串参数的构造方法,方便输出调试信息。

© 著作权归作者所有

共有 人打赏支持
海岸线的曙光
粉丝 42
博文 47
码字总数 56574
作品 0
朝阳
程序员
学习大数据需要Java基础吗?

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

大数据大咖
06/10
0
0
Java编程基础知识点和技术点归纳

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰
05/23
0
0
Java学习系列文章:说说Java中的异常

在正常的程序设计中,程序异常处理是非常关键和重要的一部分。试想一个项目中没有一个好的异常处理,这个项目会怎么样? 什么是异常 异常其实是程序上的错误,包括程序逻辑错误和系统错误。比...

java高级架构牛人
06/29
0
0
java程序员为什么使用Groovy

一直听说java世界里有个Groovy,但是一直没时间去了解它究竟是一个怎么样子的。我们现在的项目里放了很多开源包,而且项目中做流程的时候,规则就是用Groovy实现的。近来闲来无事,于是开始认...

supperman
2012/11/16
0
24
Java学习资料-Java异常处理

4、Java异常处理 4.1 Java异常概念 Java异常是Java提供的用于处理程序中错误的一种机制。 所谓错误是指在程序运行的过程中发生一些异常事件(如:除0溢出,数组下标越界,所要读取的文件不存...

晓阳
2015/01/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

angular指令监听ng-repeat渲染完成后执行自定义事件方法

今天工作中遇到需要用到ng-repeat遍历渲染完后执行某个操作,angular本身并没有提供监听ng-repeat渲染完成的指令,所以需要自己创建自定义指令。 在ng-repeat模板实例内部会暴露出一些特殊属...

孟飞阳
46分钟前
1
0
URLEncoder和URLDecoder

public static void main(String[] args) { String str1 = "https://test1-life.pingan.com/ilifecore/productMall/loading.html?productId=8000000241&channelCode=XCX00001&productCode=00......

鬼才王
55分钟前
2
0
对象及变量的并发访问-第一篇

方法内部的变量为线程安全变量 “非线程安全”问题存在于“共享变量”中,如果是方法内部的私有变量,则不存在“非线程安全”问题,所得结果也就是“线程安全”的。 package chaprer3;/**...

简心
56分钟前
1
0
程序媛眼中的程序猿原来是这样子的!

一直都想写一篇关于描述程序员的文章,但是一直没能开头,一来因为文笔不好,更主要的原因是貌似对程序员既熟悉又不熟悉,很怕写出来的是以偏概全,给大家造成对程序员的既定印象,不过,管他...

Java小铺
今天
1
0
bean标签

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 bean标签 bean标签中的init-method属性,该属性...

凯哥学堂
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部