Java初学——面向对象异常

一、异常

  1.什么是异常

    异常是指程序在运行是发生的不正常事件,会中断运行的程序称之为异常

  2.什么是异常处理

    Java编程语言使用异常处理机制为程序提供了错误处理的能力。一般处理顺序为:程序中预先设置好 对付异常的处理办法→程序运行→异常→对异常进行处理→处理完毕,程序继续运行

  3.Java中如何进行异常处理

    Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws

  4.try catch

    

 1 public class text {
 2     public static void main(String[] args) {
 3         Scanner in = new Scanner(System.in);
 4         System.out.print("请输入被除数:");
 5         int num1 = in.nextInt();
 6         System.out.print("请输入除数:");
 7         int num2 = in.nextInt();
 8         try {//try中可能出现异常的代码
 9             System.out.println(num1+"/"+ num2 +"="+ num1/ num2);
10             System.out.println("感谢使用本程序!");
11         } catch (ArithmeticException e) {//在程序发生异常时候执行的代码 括号中变量是可能出现的异常类型
12             System.out.println("除数不能为零");
13         }
14
15     }
16 }

  Java中的异常类是存在继承关系的Exception父类可以代替任何子类,找出所有的异常,但是异常涉及面太广所以在设计代码时要精写,有时异常不仅仅是一个catch块,所以catch块可以多个存在多个。如以下代码

public class text {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("请输入被除数:");
        int num1 = in.nextInt();
        System.out.print("请输入除数:");
        int num2 = in.nextInt();
        try {// try中可能出现异常的代码
            System.out.println(num1 + "/" + num2 + "=" + num1 / num2);
            System.out.println("感谢使用本程序!");
        } catch (ArithmeticException e) {// 在程序发生异常时候执行的代码 括号中变量是可能出现的异常类型
            System.out.println("除数不能为零");
        } catch (NullPointerException e) {
            System.out.println("空指针异常");
        } catch (ClassCastException e) {
            System.out.println("类型转换异常");//如果没有满足上述异常执行顶级异常(未知异常)
        }catch (Exception e) {        //异常需要从小到大的顺序 将顶级异常放在最后
            System.out.println("顶级异常");
        }

    }
}

5.try catch finally语句

  使用finally语句无论是否出不出现异常都会执行。代码最先执行try语句 出现异常执行catch 在执行finally块,如果在代码中加入了system.exit(1)则直接退出虚拟机不会运行finally语句

    try catch 和try finally都能单独使用 但是不能省略try块且不能单独存在

6.throw 和throws  

  throw:是抛出具体的某个对象,方法内部可能存在异常。请调用方处理 方法名末尾(在该方法中根本没有对该类异常的捕获)

  throws声明异常,通知调用方方法内部可能存在异常请调用方处理

  

public class text {
    public static void main(String[] args) {
        try {
            b();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public static void a () throws FileNotFoundException {//声明可能异常
    FileInputStream aFileInputStream=new FileInputStream("a.txt");

    }
    public static void b() throws FileNotFoundException {
        a();
    }
}

7.异常链

使用异常链可以一层一层的去追溯错误的产生和传递,例如:我在mian方法中调用method1方法,在method1方法中调用method2方法,在method2方法中抛出一个空指针异常。

 

public class Test {

    public static void main(String[] args) {

        Test t = new Test();

        try {
            t.method1();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void method1() throws Exception {

        try {
            method2();
        } catch (Exception e) {
            Exception exception = new Exception("method1 exception");
            exception.initCause(e);
            throw exception;
            //或者
            //throw new Exception("method1 exception", e);
        }
    }

    public void method2() {
        throw new NullPointerException("method2 exception");
    }
}

运行结果如下

可以看到 method1 exception,然后Caused by method2 exception。之所以产生异常链,是因为

Exception exception = new Exception("method1 exception");
exception.initCause(e);
throw exception;
//或者
//throw new Exception("method1 exception", e);

如果不这样处理,打印如下

java.lang.NullPointerException: method2 exception
    at normal.Test.method2(Test.java:31)
    at normal.Test.method1(Test.java:19)
    at normal.Test.main(Test.java:10)

原文地址:https://www.cnblogs.com/wuxuewei/p/10972100.html

时间: 2024-11-05 20:49:44

Java初学——面向对象异常的相关文章

Java初学——面向对象的封装,继承,多态

一.封装 1.为什要封装 封装的概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问.把尽可能多的东西藏起来,对外提供便捷的接口. 封装的好处:便于使用者正确使用系统,防止错误修改属性 有助于系统之间的松耦合,提高系统独立性 提高软件的可重用性 降低了构建大型系统的风险. 封装的流程: : 2.如何使用封装 在myexclipse中在已经建好的类中,按住快捷键Shift+Alt+S选择R 在弹出面板中选择要封装的成员变量.具体流程如图: 快

java 初学之面向对象设计 三角形,圆等设计

首先要对面向对象有一定了解,下面利用继承与派生的方式来演示java的面向对象过程: 创建一个java工程,添加一个新的pakage:Shapec; 添加一个新类,写入代码 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package Shapec; /** * * @author Administrator */ //抽象类,图形借口 public

使用Java实现面向对象编程——第五章 异常

1. 尝试通过if-else来解决异常问题: Eg: public class Test2 {       public static void main(String[] args) {             Scanner in = new Scanner(System.in);             -             System.out.print("请输入除数:");             int num2 = 0;             if (in.ha

Java基础——面向对象练习题

1.建立一个图形接口,声明一个面积函数.计算圆形和矩形的面积.注:体现面向对象的特征,对象值进行判断,用异常处理.不合法的数值需要出现"这个数值是非法的提示",不再进行运算. 2.在一个类中编写一个方法,这个方法搜索一个字符数组是否存在某个字符.如果存在则返回这个字符在数组中第一次出现的位置,否则返回-1.需要搜索的字符数组和字符都一参数的形式传递给该方法.如果传入的数组为NULL,则应该抛出IllegalArgumentException异常. 3.补充compare函数代码. 4.

java中关于异常的处理

初学java的时候,当我们碰到异常时,一般会把异常直接throws抛出去,或则在catch的时候,简单的写一句打印异常信息,但是在实际开发中,是不能这么做的.如果我们将底层的某一个异常简单的print出去,那么这个异常的捕获是没有起到任何作用,反而给编译器一个"异常已处理"的假象,导致有异常的程序会继续往下执行,这是不允许的:如果我们直接将异常抛出去,抛给上一层,也是徒劳的,反而给上一层带来麻烦. 为了避免这样的情况发生,我们一般会将异常进行转换,将编译时异常转变成运行时异常,再thr

JAVA中的异常疑点解析

1 final, finally, finalize的区别. final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承. 内部类要访问局部变量,局部变量必须定义成final类型,例如,一段代码…… finally是异常处理语句结构的一部分,表示总是执行. finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等.JVM不保证此方法总被调用 2运行时异常与一般异常有何异同? 异常表

JAVA的面向对象编程--------课堂笔记

JAVA的面向对象编程--------课堂笔记 面向对象主要针对面向过程. 面向过程的基本单元是函数.   什么是对象:EVERYTHING IS OBJECT(万物皆对象)   所有的事物都有两个方面: 有什么(属性):用来描述对象. 能够做什么(方法):告诉外界对象有那些功能. 后者以前者为基础. 大的对象的属性也可以是一个对象.   为什么要使用面向对象: 首先,面向对象符合人类看待事物的一般规律. 对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节. 方法的定义非常重要.方法有参

黑马程序员-Java基础之异常

异 常:就是不正常.程序在运行时出现的不正常情况.其实就是程序中出现的问题.这个问题按照面向对象思想进行描述,并封装成了对象.因为问题的产生有产生的原因.有问题的名称.有问题的描述等多个属性信息存在.当出现多属性信息最方便的方式就是将这些信息进行封装.异常就是java按照面向对象的思想将问题进行对象封装.这样就方便于操作问题以及处理问题. 出现的问题有很多种,比如角标越界,空指针等都是.就对这些问题进行分类.而且这些问题都有共性内容比如:每一个问题都有名称,同时还有问题描述的信息,问题出现的位置

java基础面向对象之类与对象

java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 ?封装性:保护内部结构的安全性 ?继承性:在已有的程序结构上扩充新的功能 ?多态性:在某一个该娘范围内满足 2)面向对象开发分为以下几个步骤: OOA(面向对象分析) OOD(面向对象设计) OOP(面向对象编程) 2.类与对象 1)了解类与对象的关系 ?认识类与对象 类与对象是整个面向对象之中最基础的组成单元,类是共性的一个集合,而对象是某一