`
tummyling
  • 浏览: 3180 次
社区版块
存档分类
最新评论

Java异常By荼荼小蘼

阅读更多

本文参考Link--浅谈Java异常

 

何谓Java异常,阻止当前方法或作用域继续执行的问题。

 

Java的异常体系:Throwable是Java语言中所有错误或异常的超类(包含一切可抛的东西)。他有两个子类,Error和Exception。

 

Error:用于指示合理的程序不应该试图捕获的严重问题。比如说VirtualMachineError,当JVM崩溃或用尽了他继续操作所需的资源,抛出该错误。

 

Exception:分为两大类--

Runtime Exception(也叫Checked Exception)

Unchecked Exception(非Runtime Exception)

 

异常处理方法

处理方式1:将异常捕获try...catch

处理方式2:将异常继续向外抛出

 

异常的使用

   Case 1:

try
    {
         // 可能发生异常的代码
        // 如果发生了异常,那么异常之后的代码都不会被执行
    }
    catch (Exception e)
    {
        // 异常处理代码
    }
    finally
    {
        // 不管有没有发生异常,finally语句块都会被执行
    }

 

  Case 2: 重新抛出异常

      原封不动的把这个异常抛给上一级,抛给调用这个方法的人,让他伤脑筋去吧。

 

  Case 3:异常链的使用及丢失

     为了避免异常链丢失,可在抛出异常前,调用initCause()初始化改异常的原因,这样在调用e.printStackTrace()时,会将上一层的异常也打印出来。

        如: e.initCause(a);

 

  Case 4: 清理工作

      如果一些消耗资源的操作,如IO、JDBC,用完之后没有及时正确的关闭,那后果会很严重,意味着内存的泄露。

public void readFile() {
        BufferedReader reader = null;
        try {
            try {
                reader = new BufferedReader(new InputStreamReader(
                        new FileInputStream("file")));
                // do some other work
 
                // close reader
            } finally {
                reader.close();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

 

  Case 5: 异常的误用

      有些人喜欢直接用一个Exception来捕捉所有的异常,这是其实是最傻最二的方法了,根本无法分清是由什么引起的异常。

      异常时程序处理意外情况的机制,当程序发生意外时,我们需要尽可能多的得到意外的信息,包括发生的位置,描述,原因等等。这些都是我们解决问题的线索。如果我们自己写代码,应尽可能多的对这个异常进行描述,比如说为什么会出现这个异常,什么情况下发生这个异常。如果传入方法的参数不正确,告知什么样的参数是合法的参数,或者给出一个Sample。

      还有一点,应将try block写的简短,不要将所有的东西都扔在这里。尽可能分析出是哪几行代码可能出现异常,只对可能出现异常的代码进行catch。尽量为每一个异常都写一个try...catch,避免异常丢失。因为一个try后面的多个catch中,最多只会有一个catch块被执行。

 

Case 6:try块中有return语句时, 仍然会首先执行finally块中的语句,然后方法返回。

              如果try块中存在System.exit(0)语句,那么就不会执行finally块中的代码,因为System.exit(0)会终止当前运行的JVM,程序会在JVM终止前结束执行。

1
3
分享到:
评论
2 楼 nichlas_yu 2015-01-26  
使用的时候copy,学习了。
1 楼 bitray 2015-01-26  
多调用try catch对性能有影响。而且很多情况下是非受检异常的抛出。这种情况你没办法catch

相关推荐

    利用java filter 实现业务异常拦截源码

    利用java filter 实现业务异常拦截 跳转到错误信息提示页面 我们在做项目中肯定都会遇到自定义业务异常 ,然后将业务异常信息跳转的统一的信息提示页面的情况,比如我们在struts的时候我们会用到struts的异常处理...

    Java 面经手册·小傅哥.pdf

    这是一本以面试题为入口讲解 Java 核心内容的技术书籍,书中内容极力的向你证实代码是对数学逻辑的具体实现。当你仔细阅读书籍时,会发现Java中有大量的数学知识,包括:扰动函数、负载因子、拉链寻址、开放寻址、...

    JAVA经典100个小案例

    《JAVA经典100个小案例》是一份专为初学者设计的Java编程资源,它包含了100个精心挑选的实例,旨在帮助新手快速掌握Java编程的基础知识。这些案例覆盖了Java语言的核心概念,包括数据类型、控制结构、类与对象、数组...

    7个Java小游戏源代码

    7个Java小游戏源代码 解压密码是:yykings

    java.net.SocketException Connection reset 解决方法

    在 Java 编程中,SocketException 是一种常见的异常,特别是在网络编程中。Conexion reset by peer 是一种特殊的 SocketException,它发生在客户端和服务器端之间的连接断开后,导致连接的一端继续发送数据,引发该...

    一些比较有意思的Java小程序

    "一些比较有意思的Java小程序"这个标题暗示了我们将会探讨一系列趣味性强、易于理解的Java代码示例,这些示例通常适合Java初学者用来学习和实践编程概念。 在描述中提到的“不错的Java小程序”可能包括各种实用的小...

    java错误处理:java.lang.OutOfMemoryError: Java heap space

    其中,“java.lang.OutOfMemoryError: Java heap space”是一种常见的异常情况,它表明Java虚拟机(JVM)的堆内存空间已耗尽。 #### 标题和描述中的知识点详解 **标题:“java错误处理:java.lang.OutOfMemoryError:...

    java+mysql 小型超市管理系统

    【Java+MySQL小型超市管理系统】是一个综合性的应用项目,它结合了Java编程语言和MySQL数据库管理系统,用于构建一个适用于小型超市的信息化管理平台。在这个系统中,Java Swing库被用来创建用户界面,提供友好的...

    Java开发技术大全(500个源代码).

    firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载Applet的网页文件 第2章 示例描述:本章介绍开发Java的基础语法知识。 accumulationByDoWhile.java 用do~while语句写的累加程序 ...

    java.lang.UnsupportedClassVersionError Bad version number in .class file异常的解决办法

    ### java.lang.UnsupportedClassVersionError: Bad version number in .class file 异常的解决办法 #### 一、问题概述 在使用MyEclipse进行Java开发的过程中,可能会遇到`java.lang.UnsupportedClassVersionError:...

    java文件夹按时间、大小等排序

    在Java编程中,对文件夹中的文件进行排序是一项常见的任务,尤其在处理大量数据或进行自动化操作时。这里我们将深入探讨如何使用Java实现文件按时间、大小等属性进行排序的功能。 首先,我们要引入`java.io.File`类...

    Java API文档 中文网页版

    Java API文档是Java开发者的重要参考资料,它包含了Java开发工具包(JDK)中的所有类、接口、方法和常量的详细说明。这份中文网页版的Java API文档为中国的开发者提供了便利,无需通过英文版本来学习和查找API信息,...

    java2python--java代码转python工具

    在实际的转换过程中,工具可能会遇到挑战,比如处理Java的异常处理机制(try-catch-finally)到Python的异常处理(try-except-finally),或者将Java的多线程代码转换为Python的并发模型(如线程、进程或协程)。...

    java源码包---java 源码 大量 实例

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    Java2Pas Java代码转pas代码

    Java2Pas是一个实用工具,主要用于将Java编程语言编写的源代码转换为Pascal语言的等效代码。这个工具对于那些需要在两种语言之间迁移代码或者理解不同编程语言语法的开发者来说非常有价值。Java和Pascal虽然都是面向...

    高质量java编程

    3. **异常处理**:Java的异常处理机制是其强项之一,书中详细阐述了如何使用try-catch-finally语句块来捕获和处理异常,以及如何自定义异常。 4. **集合框架**:Java集合框架是存储和管理数据的重要工具,书中涵盖...

    Java小游戏之愤怒的小鸟

    《Java小游戏之愤怒的小鸟》是一款基于Java编程语言开发的休闲娱乐游戏,旨在提供一个学习和交流编程技术的平台。这款游戏的实现充分展示了Java在图形用户界面(GUI)设计、事件处理、对象动画以及游戏逻辑等方面的...

    基于JAVA的小型超市管理系统

    JAVA提供了健全的异常处理机制,通过try-catch-finally语句块捕获和处理运行时错误。对于敏感信息,如用户密码,可使用加密算法如MD5或SHA进行保护。 总的来说,【基于JAVA的小型超市管理系统】是一个集成了JAVA...

    java转js工具

    - 关键点包括处理Java的类和对象系统、异常处理、包和导入、以及Java标准库的映射等。 3. **工具特点** - 源程序转换:这类工具的目标是尽可能保持源代码的逻辑和结构,以便开发者能理解并维护转换后的JavaScript...

    100家大公司java笔试题汇总

    以下是Java笔试题汇总,涵盖了Java的多个方面,包括Java基础、Java面向对象编程、Java多线程、Java网络编程、Java数据库编程等。 Java基础 1. Java的基本数据类型有哪些? 答:byte、short、int、long、float、...

Global site tag (gtag.js) - Google Analytics