• 导引问题


    在实际工作中,我们遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求;你的程序要打开某个文件,这个文件可能不存在或者文件格式不对;你要读取数据库的数据,数据可能是空的;我们的程序再运行着,但是内存或硬盘可能满了等等。

          软件程序在运行过程中,非常可能遇到刚刚提到的这些问题,我们称之为异常,英文是:Exception,意思是例外。遇到这些例外情况,或者叫异常,我们怎么让写的程序做出合理的处理,安全的退出,而不至于程序崩溃呢?我们本章就要讲解这些问题。

          如果我们要拷贝一个文件,在没有异常机制的情况下,我们需要考虑各种异常情况,伪代码如下:

    【示例】伪代码使用if处理程序中可能出现的各种情况

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public class Test1 {
        public static void main(String[] args) {
            //将d:/a.txt复制到e:/a.txt
            if("d:/a.txt"这个文件存在){
                if(e盘的空间大于a.txt文件长度){
                    if(文件复制一半IO流断掉){
                        停止copy,输出:IO流出问题!
                    }else{
                        copyFile("d:/a.txt","e:/a.txt");
                    }
                }else{
                    System.out.println("e盘空间不够存放a.txt!");
                }
            }else{
                System.out.println("a.txt不存在!");
            }
        }
    }

    这种方式,有两个坏处:

          1. 逻辑代码和错误处理代码放一起!

          2. 程序员本身需要考虑的例外情况较复杂,对程序员本身要求较高!

          那么,我们如何解决应对异常情况呢?Java的异常机制给我们提供了方便的处理方式。如上情况,如果是用Java的异常机制来处理,示意代码如下(仅限示意,不能运行):

    1
    2
    3
    4
    5
    try {
        copyFile("d:/a.txt","e:/a.txt");
    catch (Exception e) {
        e.printStackTrace();
    }

    异常机制本质

          就是当程序出现错误,程序安全退出的机制。

  • 相关阅读:
    【转】编译原理4种文法类型
    Gamma校正与线性空间
    【翻译】CEDEC2014 CAPCOM 照相机正确的照片真实的制作工作流
    【翻译】CEDEC2013 BANDAI NAMCO 了解游戏格斗动画中的身体运动结构和原理
    UnrealEngine4 PBR Shading Model 概述
    【翻译】Kinect v2程序设计(C++-) AudioBeam篇
    【翻译】Kinect Studio是? 三月 SDK Update的新机能
    【翻译】Kinect v2程序设计(C++) Body 篇
    【翻译】Kinect v2程序设计(C++) BodyIndex篇
    【翻译】Kinect v2程序设计(C++) Depth编
  • 原文地址:https://www.cnblogs.com/huaxiansheng/p/15316064.html
Copyright © 2020-2023  润新知