Java中实现异常处理的基础知识

异常 (Exception):发生于程序执行期间,表明出现了一个非法的运行状况。许多JDK中的方法在检测到非法情况时,都会抛出一个异常对象。

例如:数组越界和被0除。

源代码示例:

package yanzheng;

//关于异常  2015.11.11

import javax.swing.*;

public class AboutException {

public static void main(String[] args)

{

int i=1, j=0, k;

//   k=i/j;    //此句会抛出异常,显示被0除

try

{

k = i/j;    // Causes division-by-zero exception

//throw new Exception("Hello.Exception!");

}

catch ( ArithmeticException e)  //捕获类型为算术异常,捕获对象为e,算数异常就比如被0除这种情况

{

System.out.println("被0除.  "+ e.getMessage());

//e.getMessage()这句是包中的一个类,去掉也行

}

/*Exception为所有的异常类型.使用catch语句,只能捕获Exception类及其子类的对象。

因此,一个捕获Exception对象的catch语句块可以捕获所有“可捕获”的异常。*/

catch (Exception e)

{

if (e instanceof ArithmeticException)

//instanceof为如果e可转换为ArithmeticException这种类型

System.out.println("被0除");

else

{

System.out.println(e.getMessage());

}

}

finally  //finally语句会被执行

{

JOptionPane.showConfirmDialog(null,"OK");

}

}

}

异常处理的目的是依据实际情况提供不同的错误应对策略与手段,使程序更稳定,更安全。

异常处理的主要用途是提供准确的错误消息,解释失败的原因、位置和错误类型等,同时提供一定的恢复能力,尽可能地保证数据完整性不被破坏,并让程序能继续运行。

Java中的异常捕获语句

Java 中所有可捕获的异常都派生自 Exception 类。

使用Java异常处理机制

*把可能会发生错误的代码放进try语句块中。

*当程序检测到出现了一个错误时会抛出一个异常对象。异常处理代码会捕获并处理这个错误。catch语句块中的代码用于处理错误。

*当异常发生时,程序控制流程由try语句块跳转到catch语句块。

*不管是否有异常发生,finally语句块中的语句始终保证被执行。

*如果没有提供合适的异常处理代码,JVM将会结束掉整个应用程序。

JDK中与异常相关的类

Java中的异常分类

Throwable类有两个直接子类:

Exception:出现的问题是可以被捕获的;

Error:系统错误,通常由JVM处理。

可捕获的异常又可以分为两类:

(1)check异常:直接派生自Exception的异常类,必须被捕获或再次声明抛出

(2)runtime异常:派生自RuntimeException的异常类。使用throw语句可以随时抛出这种异常对象:

throw new ArithmeticException(…);

异常的“多态”特性

*可以有多个catch语句块,每个代码块捕获一种异常。在某个try块后有两个不同的catch块捕获两个相同类型的异常是语法错误。

*使用catch语句,只能捕获Exception类及其子类的对象。因此,一个捕获Exception对象的catch语句块可以捕获所有“可捕获”的异常。

*将catch(Exception e)放在别的catch块前面会使这些catch块都不执行,因此Java不会编译这个程序。

“finally”的功用

*资源泄露:当一个资源不再被某应用程序使用,但此程序并未向系统声明不再使用此资源时发生这种情况

*finally语句块主要用于解决资源泄露问题,它位于catch语句块之后,JVM保证它们一定执行。

*注意:finally语句块中也可能发生异常,如果这种情况发生,先前的异常被放弃。

Java中实现异常处理的基础知识的更多相关文章

  1. JAVA面试题集之基础知识

                           JAVA面试题集之基础知识 基础知识:  1.C 或Java中的异常处理机制的简单原理和应用. 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就 ...

  2. java 中的异常处理

    一. 异常的概念和Java异常体系结构  异常是程序运行过程中出现的错误.本文主要讲授的是Java语言的异常处理.Java语言的异常处理框架,     是Java语言健壮性的一个重要体现. Java把 ...

  3. Java IO(1)基础知识——字节与字符

    正所谓怕什么来什么,这是知名的“墨菲定律”.Java基础涵盖各个方面,敢说Java基础扎实的人不是刚毕业的学生,就是工作N年的程序员.工作N年的程序员甚至也不敢人人都说Java基础扎实,甚至精通,往往 ...

  4. 总结了零基础学习Java编程语言的几个基础知识要点

    很多Java编程初学者在刚接触Java语言程序的时候,不知道该学习掌握哪些必要的基础知识.本文总结了零基础学习Java编程语言的几个基础知识要点. 1先了解什么是Java的四个方面   初学者先弄清这 ...

  5. 深入了解 Java 中的异常处理 + 面试题

    # 深入了解 Java 中的异常处理 + 面试题 在程序开发中,异常处理也是我们经常使用到的模块,只是平常很少去深究异常模块的一些知识点.比如,try-catch 处理要遵循的原则是什么,finall ...

  6. java Reflection(反射)基础知识讲解

    原文链接:小ben马的java Reflection(反射)基础知识讲解 1.获取Class对象的方式 1.1)使用 "Class#forName" public static C ...

  7. 第八节:详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架

    前言 大家好,给大家带来详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架的概述,希望你们喜欢 JAVA 异常 try...catch...finally结构的使用方法 class Tes ...

  8. Java中的异常处理:何时抛出异常,何时捕获异常,何时处理异常?

    Java中的异常处理:何时抛出异常,何时捕获异常? 2017-06-07 1 异常分类 Throwable对象可以分为两组: 一组是unchecked异常,异常处理机制往往不用于这组异常,包括: Er ...

  9. Java异常处理的基础知识

    Java中的异常捕获语句 Try{ //可能发生运行错误的代码: } catch(异常类型 异常对象引用){ //用于处理异常的代码 } finally{ //用于“善后” 的代码 } Java 中所 ...

随机推荐

  1. USACO Section 2.4: Fractions to Decimals

    乍看题目感觉有难度,实际分析后其实是道简单题 /* ID: yingzho1 LANG: C++ TASK: fracdec */ #include <iostream> #include ...

  2. POJ 2689 Prime Distance (素数+两次筛选)

    题目地址:http://poj.org/problem?id=2689 题意:给你一个不超过1000000的区间L-R,要你求出区间内相邻素数差的最大最小值,输出相邻素数. AC代码: #includ ...

  3. 日期工具类 - DateUtil.java

    日期工具类,提供对日期的格式化和转换方法.获取区间日期.指定日期.每月最后一天等. 源码如下:(点击下载 -DateUtil.java.commons-lang-2.6.jar ) import ja ...

  4. BZOJ 1502 月下柠檬树(simpson积分)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1502 题意:给出如下一棵分层的树,给出每层的高度和每个面的半径.光线是平行的,与地面夹角 ...

  5. Ajax的简单请求案例

    $.ajax({ url : rootPath +'/jasframework/choosepilecontrol/querySubsytem.do', type : "POST" ...

  6. UC编程之线程

    线程--隶属于进程,是进程中的程序流.操作系统支持多进程,每个进程内部支持多线程.多线程并行(同时执行)代码. 进程--重量级的,每个进程都需要独立的内存空间. 线程--轻量级的,线程不拥有独立的内存 ...

  7. ImageView 设置图片

      android doc中是这样描述的: public void setImageResource (int resId) 这是其中的一个方法,参数resld是这样: ImageView.setIm ...

  8. js如何判断一个对象是不是Array

    typeof 操作符 对于Function, String, Number ,Undefined 等几种类型的对象来说,他完全可以胜任,但是为Array时 var arr=new Array(&quo ...

  9. 事件类型: 错误 事件来源: Service Control Manager 事件种类: 无 事件 ID: 7000

    在控制面板\管理工具\服务里找dns Client 服务,把他启动了

  10. JavaScript——new Date().getMonth()

    new Date().getMonth(); 说明:参照现在的月份,getMonth()返回的是0-11的数字,也就是说0=1月,1=2月……11=12月 当前的月份就是,new Date().get ...