面向对象chapter10

异常

1. 什么是异常?

java程序在运行过程中出现的意外情况

2.  java中如何进行异常处理?

java中的异常处理机制

try、catch、finally、throw、throws

try{

//有可能出现异常的代码

          }catch(异常类型){

                   //对出现的异常进行捕获和处理

                      return;

//System.exit(1);// finally语句块将不执行

                      }finally{

       //不管程序是否发生异常,都要执行的代码

                }

           try…catch…finally一共有3种组合方式

       try…catch…(catch可以有多种,但要注意先子类后父类的顺序)

      try…catch…finally…

      try…finally…

3. 程序执行过程中出现的影响程序正常运行的现象
       3.1 异常语法
        try{
            //代码块   
        }catch(异常类型 e){

}catch(异常类型 e2){

}...{

}finally{
       
        }
       注意:try 表示可能出现异常的代码块
         catch 抓取异常,并进行处理
               可以抓取多个异常,异常的范围要从小到大抓取
                并且只会执行第一个匹配的异常类型
         finally 最终的 不管是否出现异常,finally中的代码块始终会执行
             除虚拟机停止(System.exit(1))这种情况外
         注意:finally 和 return 的执行顺序 先执行return
          把返回结果保存在返回结果区域,并没有返回,在执行finally 最后 把保存在结果区域的结        果返回给调用者
       3.2 throws 抛出异常
        a.就是当当前方法,不能解决这个异常的时候,必须把这个异常交给上一个调用者去处理
        b.语法
            访问修饰符 返回值类型 方法名(参数列表)[throws 异常]{
            }

4.java异常体系
        Throwable
            |--    error:(出现不能通过程序处理的错误)       
            |--    Rxception::(可以同程序抓取或者抛出的错误)
                |--检查异常(非运行时异常):编译阶段会出现的异常
                   SQlException
                   IOException
                   ClassNotFoundException
                |--非检查异常(运行时异常RunTimeException):运行简单会出现的异常
                   NullPointerException
                   ArrayIndexOutOfBoundException
                        ClassCastExeption
            注意:checked 异常,是必需处理的
                  运行时异常,可以不处理

public class Test {
    private static Logger logger=Logger.getLogger(Test3.class.getName());
    public static void main(String [] args){
        Scanner input=new Scanner(System.in);
        System.out.print("请输入被除数:");
        int num1=input.nextInt();
        System.out.println("");
        System.out.print("请输入除数:");
        int num2=input.nextInt();
        try{
            System.out.println(num1/num2);
            System.out.println("感谢使用本程序!");
        }catch(InputMismatchException e){
            logger.error("出现错误!除数和被除数必须为整数!",e);
        }catch(ArithmeticException  e){
            logger.error(e.getMessage());
        }catch(Exception e){
            logger.error(e.getMessage());
        }finally {
            System.out.println("欢饮您使用本程序!");
        }
    }
}

public class TestEx {
        public static void main(String[] args){
            Scanner  console = new Scanner(System.in);
            try{
                System.out.println("try开始");
                int a = console.nextInt();
                int b = console.nextInt();
                System.out.println("try结束");
            }catch(InputMismatchException ee){
                System.out.println("异常");
             // ee.printStackTrace();
                String mes = ee.getMessage();
                System.out.println(mes);
            }catch(NullPointerException e){
                System.out.println("输入的不是整数");
             //    e.printStackTrace();
            }catch(ClassCastException e1){
                System.out.println("类型转换异常");
            }
            System.out.println("运行结束");
        }
}
时间: 2024-10-21 11:47:11

面向对象chapter10的相关文章

python学习 面向对象封装

from collectoins import namedtuplePoint=namedtuple('point',['x','y'])t1=Point(1,2)print(t1.x)print(t1.y)没有方法的类属性不会发生变化    定义简单 不能改变面向对象封装私有属性!!!私有方法!!!用装饰器描述的几个方法@property !!!@classmethod!!@staticmethod! 封装:class Teacher:     def __init__(self,name,p

python—面向对象的封装

封装 私有属性 class Teacher: __identifier = 'Teacher' #私有静态属性 def __init__(self,name,pwd) self.name = name self.__pwd = pwd #私有属性 内部使用,外部不能使用 def pwd(self): print(self.__pwd) alex = Teacher('alex','3714') alex.pwd() class Teacher: __identifier = 'Teacher'

python学习_day26_面向对象之封装

1.私有属性 (1)动态属性 在python中用双下划线开头的方式将属性隐藏起来.类中所有双下划线开头的名称,如__x都会自动变形成:_类名__x的形式.这种自动变形的特点是: a.类中定义的__x只能在内部使用,如self.__x,引用的就是变形的结果.b.这种变形其实正是针对外部的变形,在外部是无法通过__x这个名字访问到的.c.在子类定义的__x不会覆盖在父类定义的__x,因为子类中变形成了:_子类名__x,而父类中变形成了:_父类名__x,即双下滑线开头的属性在继承给子类时,子类是无法覆

python面向对象知识点疏理

面向对象技术简介 类: 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例.class 类变量:类变量在整个实例化的对象中是公用的.类变量定义在类中且在函数体之外.类变量通常不作为实例变量使用. 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据. 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖,也称为方法的重写. 实例变量:定义在方法中的变量,只作用于当前实例的类. 继承:即一个派生类(de

php学习笔记 面向对象中[接口]与[多态性]的应用

代码如下: <?php /* 接口技术 * * 接口是一种特殊的抽象类,抽象类又是一种特殊的类 * * 接口和抽象类是一样的作用 * * 因为在PHP是单继承的,如果使用抽象类,子类实现抽象类就不能再去继承其他的类了 * * 如果既想实现一些规范,又想继承其他类.就要使用接口. * * 接口和抽象类的对比 * * 1.作用相同,都不能创建对象,都需要子类去实现 * * 2.接口的声明和抽象类不一样 * * 3.接口被实现方式不一样 * * 4.接口中的所有方法必须是抽象方法,只能声明抽象方法(不

php面向对象

面向对象 什么是面向对象? 面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程架构,OOP的一条基本原则是计算机程 序是由单个能够起到子程序作用的单元或对象组合而成,OOP达到了软件工程的三个目标:重用性.灵活性和扩展性.为了实现整体 运算,每个对象都能够接收信息.处理数据和向其它对象发送信息. 什么是面向对象编程呢? 把每个独立的功能模块抽象成类形成 对象,由多个对象组成这个系统,这些对象之间都能够接收信息.处理数据和向其它对象

面向对象注意事项

在面向对象中,有实例变量和类变量,实例变量为类对象的实例成员,而类变量不仅类可以直接调用,而且类的对象也可以调用.类对象可以对实例变量进行添加.修改.删除操作等... 下面就用个示例来做参考: #!/usr/bin/env python # -*- coding:utf-8 -*- class PersonInfo(object): commity_data = 123 def __init__(self,name,age): self.name = name self.age = age de

java面向对象:面向对象的思想和概述

1:面向对象思想 面向对象是基于面向过程的编程思想. 面向过程:强调的是每一个功能的步骤 面向对象:强调的是对象,然后由对象去调用功能 2:面向对象的思想特点 A:是一种更符合我们思想习惯的思想 B:可以将复杂的事情简单化 C:将我们从执行者变成了指挥者 开发,设计,特征 面向对象开发 就是不断的创建对象,使用对象,指挥对象做事情. 面向对象设计 其实就是在管理和维护对象之间的关系. 面向对象特征 封装(encapsulation) 继承(inheritance) 多态(polymorphism

6 面向对象之类和对象

1 面向对象和面向过程的区别 两者都是软件开发思想,先有面向过程,后有面向对象.在大型项目中,针对面向过程的不足推出了面向对象开发思想. 区别: 1)编程思路不同: 面向过程以实现功能的函数开发为主,而面向对象要首先抽象出类.属性及其方法,然后通过实例化类.执行方法来完成功能. 2)封装性:都具有封装性,但是面向过程是封装的是功能,而面向对象封装的是数据和功能. 3)面向对象具有继承性和多态性,而面向过程没有继承性和多态性,所以面向对象优势是明显. 2 类和对象 对象:客观存在的实体(一个具体的