面向对象之异常

异常

异常:就是程序在运行时出现的不正常情况。

异常的由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述,并封装成对象。其实就是java对不正常情况进行描述后的对象体现。

对于问题的划分:两种:一种是严重的问题,一种是非严重的问题。

  1. 对于严重的,java通过Error类进行描述。对于Error一般不编写针对性的代码对其进行处理
  2. 对于非严重的,java通过Exception类进行描述。对于Exception可以使用针对性的处理方式进行处理

无论Error或者Exception都具有一些共性内容,比如:不正常情况的信息,引发原因等。

Throwable

|-----Error

------XXXX

|-----Exception

------XXXX

异常的处理

java提供了特有的语句进行处理

格式:

try {
    需要被检测的代码;
 } catch(异常类   变量) {
    处理异常的代码;(处理方式)
 } finally {
    一定会执行的语句;
 }

对捕获到的异常对象进行常见方法操作:

  1. String getMessage();获取异常信息。
  2. String toString();获取异常名称:异常信息
  3. void printStackTrace();获取异常名称,异常信息,异常出现的位置,其实JVM默认的异常处理机制,就是在调用printStackTrace(),打印异常在堆栈中的跟踪信息

示例代码如下:

class Demo {
    int div(int a, int b) {
        return a/b;  //new ArithmeticException();
    }
}
public class ExceptionDemo {

    public static void main(String[] args) {
        Demo d = new Demo();
        try {
            int x = d.div(4, 0); //new ArithmeticException();
            System.out.println("x="+x);
        } catch(Exception e) { //Exception e = new ArithmeticException();
            System.out.println("除零啦");
            System.out.println(e.getMessage()); // / by zero
            System.out.println(e);//异常名称:异常信息
            e.printStackTrace();//异常名称,异常信息,异常出现的位置
                                //其实JVM默认的异常处理机制,就是在调用printStackTrace(),打印异常在堆栈中的跟踪信息
        }

        System.out.println("over");
    }

}

在函数上声明异常(throws)。便于提高安全性,让调用者进行处理,不处理编译失败。

如下:

class Demo {
    int div(int a, int b) throws Exception {//在功能上通过throws的关键字声明了该功能有可能会出现问题
        return a/b;  //new ArithmeticException();
    }
}
public class ExceptionDemo {

    public static void main(String[] args) {
        Demo d = new Demo();
        try {
            int x = d.div(4, 0);//new ArithmeticException();
            System.out.println("x="+x);
        } catch (Exception e) {
//            e.printStackTrace();
            System.out.println(e.toString());
        } 

        System.out.println("over");
    }

}

对多异常的处理

  1. 声明异常时,建议声明更为具体的异常,这样处理的可以更具体
  2. 对方声明几个异常,就对应有几个catch块,不要定义多余的catch块。如果多个catch块中的异常出现继承关系,父类异常catch块放在最后

建议在进行catch处理时,catch中一定要定义具体处理方式。不要简单定义一句:e.printStackTrace();也不要简单的就书写一条输出语句。

示例如下:

class Demo {
    int div(int a, int b) throws ArithmeticException, ArrayIndexOutOfBoundsException {//在功能上通过throws的关键字声明了该功能有可能会出现问题

        int[] arr = new int[a];
        System.out.println(arr[4]);
        return a/b;  //new ArithmeticException();
    }
}
public class ExceptionDemo {

    public static void main(String[] args) {
        Demo d = new Demo();
        try {
            int x = d.div(5, 0);//new ArithmeticException();
            System.out.println("x="+x);
        } catch (ArithmeticException e) {
//            e.printStackTrace();
            System.out.println(e.toString());
            System.out.println("除零了");
        } catch (ArrayIndexOutOfBoundsException e) {
//            e.printStackTrace();
            System.out.println(e.toString());
            System.out.println("角标越界了");
        } catch(Exception e) {
            System.out.println("haha:"+e.toString());
        } 

        System.out.println("over");
    }

}
时间: 2024-11-04 19:18:02

面向对象之异常的相关文章

面向对象(异常概述)

/** * Created by rabbit on 2014-08-05. * 异常:就是程序在运行时出现不正常情况 * 异常由来:问题也是现实生活中一个具体的事物,也可以 * 通过java的类形式进行描述,并封装成对象.其实就是 * java对不正常情况进行描述后的对象体现. * * 对于问题的划分,一种是严重的问题,一种是非严重的问题. * * 对于严重的,java通过Error类进行描述 * 对于Error一般不编写针对性的代码对其进行处理 * * 对于非严重的,java通过Except

java面向对象(异常)

1. 异常:就是程序在运行时出现不正常情况 异常由来:问题也是现实生活中一个具体的事物,也可以通过java的类形式进行描述.并封装成对象.其实就是  java对不正常情况进行描述后的对象体现. 对于严重的,java通过error类进行描述 对于error一般不编写针对性的代码对其进行处理 对于非严重的,java通过exception类进行描述. 对于exception可以使用针对性的处理方式进行处理 无论Error或者Exception都具有一些共性内容.比如:不正常情况的信息,引发原因等. 异

Java面向对象之异常详解

目录 Java面向对象之异常[一] Java面向对象之异常[二] 捕获异常的规则 访问异常信息 异常对方法重写的影响 finally详解 Java面向对象之异常[一] Java面向对象之异常[二] 往期回顾:上一篇我们大致总结了异常的继承体系,说明了Exception和Error两个大类都继承于顶级父类Throwable,又谈到编译时异常与运行时异常的区别,谈到异常的处理方式,以及处理方式中关于捕获方式的几种类型. 本篇承上启下,将从异常的其余部分进行总结,但是毕竟现在处于初学阶段,未必能够体会

12-21java面向对象之异常

1.异常 异常是导致程序中断执行的一种指令流. public class TestException1 { public static void main(String[] args) { int i = 10; //定义整型变量 int j =0 ; //定义整型变量 int temp = i/j ; System.out.println("两个数字相除的结果:" + temp); } } 程序在执行之后出现异常提示: F:\Reliability\java\work\Excepti

面向对象04异常

public class ExceptionTest { /** * 生活中的异常:--->摔跤 * 下楼梯的时候,我也不想摔跤,但是确实摔了! * 然后呢??难道后半辈子就不过了?? * 之后的生活肯定还得继续!!! * * 程序中的异常 : 在程序运行期间,发生了不正常的事件(代码的问题),中断了程序执行! * 从出现异常的地方,之后的代码都不会执行! * 显然不符合我们的需求! * 我们的需求--->继续执行后续的代码! * 怎么执行后续的代码? * 使用异常处理机制: * 给程序提供了

015_面向对象_异常,包和Object类

1.异常(http://blog.csdn.net/hguisu/article/details/6155636) (1)异常的定义 异常是指在运行期间发生的不正常情况,java中用类的形式对不正常情况进行了描述和封装,称为异常类.不同的问题用不同的类进行具体的描述. 问题很多,描述的类也很多,将其共性进行向上抽取,形成了异常体系. (2)异常的体系 ①Error(程序不可处理的)  是由jvm抛出的严重性问题,这种问题发生一般不针对性处理,直接修改程序. ②Exception(程序可以处理的)

C#面向对象10_异常_正则表达式

异常_正则表达式 异常try-catch 在很多情况下,我们不确定程序是否能够正常运行,尤其是在需要第三方配合时,比如:用户输入.操作文件.连接数据库等等情况下,会有一些不可控的因素导致程序出现错误.因此,我们需要一种机制来处理程序的意外错误,这就是try-catch语句的应用范围了. 语法 try{ //有可能出现错误的代码 } catch(Exception 异常变量) { //对异常进行处理 }finally { //无论是否出现异常都会被执行的代码 } 其中: try用来尝试性的执行可能

《Java基础教程完整版》电子版书正式发布,欢迎大家免费下载

截止目前,Java系列教程已更新完毕.内容覆盖了:JavaSE基本知识点.UML建模.单元测试等.希望对想学习Java语言的朋友能够提供帮助.在编写的过程中,难免会出现一些错误,希望大家能多多提些意见. 由于本书都是从笔者CSDN博客中摘抄过来的,基本没有经过什么正规的校验,所以难免会出现一些不对的地方.欢迎各位大牛对本书提出批评. 作者博客:http://blog.csdn.net/lhy_ycu 作者邮箱:[email protected] 笔者声明:该电子书由ITeye提供电子书DIY功能

《Python简明教程》总结

Python经典教程<Python简明教程> 目录: 为什么Python 安装Python 体验Python Python数据类型 运算符与表达式 控制流 函数 模块 数据结构 解决问题 面向对象 输入输出 异常 标准库 更多的内容