目录

中文2

English45

中文

异常与错误处理

Java 的基本理念是"结构不佳的代码将不能运行"。 发现错误的理想时机是在编译阶段,也就是在你试图运行程序之前。然而,编译期间并 不能找出所有的错误,余下的问题必须在运行期间得到解决。这就需要错误源能通过某 种方式,把适当的信息传递给某个接收者,后者将知道如何正确处理这个问题。 C以及其它早期语言常常具有多种错误处理模式,这些模式往往建立在约定俗成的基础之上,而并不属于语言的一部分。通常:你会返回某个特殊值或者设置某个标志,并且假定接收者将对这个返回值或标志进行检查,以判定是否发生了错误。然而,随着时间的推移,人们发现,高傲的程序员们在使用程序库的时候更倾向于认为:"对,错误也许会发生,但那是别人造成的,不关我的事"。所以,程序员不去检查错误条件,也就不足为奇了(何况对某些错误条件的检查确实显得很无聊)。如果你在每次调用方法的时候都彻底地进行错误检查,代码很可能会变得难以阅读。正是由于程序员还能用这些方式拼凑系统,所以他们拒绝承认这样一个事实:对于构造大型﹑健壮﹑可维护的程序而言,这种错误处理模式已经成为了主要障碍。 解决的办法是,用强制规定的形式来消除错误处理过程中随心所欲的因素。这种作法由来已久,对"异常处理"(exception handling)的实现可以追溯到六十年代的操作系统,甚至于 BASIC 语言中的"on error goto"语句。C++的异常处理机制基于 Ada,Java 中的异常处理则建立在 C++的基础之上(尽管看上去更像 Object Pascal)。 "异常"(exception)这个词有"我对此感到意外"的意思。问题出现了,你也许不清楚该如何处理,但你的确知道不应该置之不理;你要停下来,看看是不是有别人或是在别的地方,能够处理这个问题。只是你在当前的环境(current context)中没有足够的信息来解决这个问题,所以你就把这个问题提交到一个更高级别的环境中,这里将有人作出正确的决定(有点像军队里的指挥系统)。 使用异常所带来的另一个相当明显的好处是,它能使错误处理代码变得更有条理。与原先"对于同一个错误,要在多个地方进行检查和处理"相比,你不必在方法调用处进行检查(因为异常机制将保证捕获这个错误)。并且,你只需在一个地方处理错误,既所谓的"异常处理程序"(exception handler)。这种方式不仅节省代码,而且把"描述做什么事"的代码和"出了问题怎么办"的代码相分离。总之,与以前的错误处理方法相比,异常机制使代码的阅读﹑编写和调试工作更加井井有条。 因为异常处理是Java中唯一正式的错误报告机制,并且通过编译器强制执行,所以不学习异常处理的话,也就只能对付前面学习过的那些例子了。本章将向你介绍如何编写正确的异常处理程序,以及当你的方法出问题的时候,如何产生自定义的异常。1比如,C程序员不妨去检查一下prinft( )的返回值。

基本异常

"异常情形"(exceptional condition)是指引发阻止当前方法或作用域继续执行的问题。把异常情形与普通问题相区分很重要,这里的普通问题是指,你在当前环境下能得到足够的信息,总能处理这个错误。而对于异常情形,你就不能继续下去了,因为你在当前环境下无法获得必要的信息来解决问题。你所能做的就是从当前的环境中跳出,并且把问题提交给上一级别的环境。这就是抛出异常时所发生的事情。 除法就是个简单的例子。除数有可能为 0,所以先进行检查很有必要。但除数为 0 代表的究竟是什么意思呢?你通过当前正在解决的问题的环境,或许能知道该如何处理除数为 0 的情况。但如果这是一个意料之外的值,你也不清楚该如何处理,那就要抛出异常,而不是顺着原来的路径继续执行下去。 当你抛出异常后,有几件事会随之发生。首先,同 Java 中其它对象的创建一样,将使用 new 在堆上创建异常对象。然后,当前的执行路径(你不能继续下去了)被终止,并且从当前环境中弹出异常对象的引用。此时,异常处理机制接管程序,并开始寻找一个恰当的地方来继续执行程序。这个恰当的地方就是"异常处理程序"(exceptionhandler),它的任务是将程序从错误状态中恢复:以使程序能要么换一种方式运行,要么继续运行下去。 举一个抛出异常的简单例子。对于对象引用 t,传给你的时候可能尚未被初始化。所以在使用这个引用调用其方法之前,你会先对引用进行检查。你可以创建一个代表错误信息的对象,并且将它从当前环境中"抛出",这样就把错误信息传播到了"更大"的环境中。这被称为"抛出一个异常"(throwing an exception),看起来像这样: if (t == null)

throw new NullPointerE

java 异常 中英文_Java异常与错误处理中英文翻译.doc相关推荐

  1. java异常例子_java 异常的实例详解

    java 异常的实例详解 1.异常的定义:程序在运行时出现不正常情况. 异常的划分: Error:严重的问题,对于error一般不编写针对性的代码对其进行处理. Exception:非严重的问题,对于 ...

  2. java 异常 规范_java 异常规范

    异常规范 异常介绍 Throwable 所有Exception和Error的父类. Error 致命错误. 项目自身存在问题, 诸如格式有问题, 编译版本不对, 堆栈溢出等, 项目在出现ERROR的情 ...

  3. java异常体系_JAVA异常体系结构详解

    一.什么是异常 异常:程序在运行过程中发生由于硬件设备问题.软件设计错误等导致的程序异常事件.(在Java等面向对象的编程语言中)异常本身是一个对象,产生异常就是产生了一个异常对象.      --百 ...

  4. java异常标记_java异常机制

    ------------------------------------------------------------------下面是一些java异常集---------------------- ...

  5. java 异常练习题_Java 异常(习题)

    异常 Key Point * 异常的概念和分类 * 异常的产生和传递 * 异常的处理 * 自定义异常 练习 1. 填空 Java 中所有的错误都继承自throwable类:在该类的子类中, Error ...

  6. 面试常见java异常题_Java异常面试题(含答案)

    1.Java中异常分为哪两种? 编译时异常 运行时异常 2.异常的处理机制有几种? 异常捕捉:try-catch-finally,异常抛出:throws. 3.如何自定义一个异常 继承一个异常类,通常 ...

  7. 简述java的异常机制_JAVA异常机制简述

    1.类的继承结构 在JAVA所有的异常对象都是Throwable类的一个子类的实例 Exception包含两个分支,由于程序错误导致的异常属于RuntimeException,比如数组下标越界,空指针 ...

  8. java异常代码_Java异常(示例代码)

    Java异常处理 程序发生异常的原因有很多,通常包含以下几类: 用户输入非法数据 要打开的文件不存在 网络通信连接中断,或者JVM内存溢出 异常有的是因为用户错误引起的,有的是程序错误引起的,还有一些 ...

  9. java异常体系_Java异常体系(Throwable、Error、Exception)

    Java异常体系 java异常体系继承图 Throwable Throwable类是所有异常的父类,常见的子类有两个Error.Exception. Error Error类就是程序运行时候抛出的最严 ...

  10. java异常判断_Java异常类

    异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的异常. ...

最新文章

  1. c# mysql fill_C#里sqlDataAdapter.fill(DataSet,String)的用法
  2. oracle高级查询案例,oracle高级查询(实例基于scott用户四张表)
  3. 手游频繁崩溃”闪退”? 从程序上找原因
  4. Android 控件 - Button
  5. mysql rpm 安装多实例_MySQL搭建系列之多实例
  6. VMware workstation 磁盘扩容
  7. python中数据读写_【循序渐进学Python——文件中数据的读写以及操作】
  8. JSP_tomcat_mysql_注冊验证用户;
  9. Web前端开发如何提高技术水平!
  10. Atitit 项目战略之道 attilax著
  11. 使用yuicompressor-maven-plugin压缩js及css文件
  12. 英雄无敌3 Def 文件对应生物列表
  13. php后门文件,php后门屌炸天
  14. php只取时间的下士_php取当时的年月日时分秒毫秒
  15. 女博士日记软件测试,一个女博士的日记
  16. RuntimeError: NEOS requires a valid email address. Please set the ‘NEOS_EMAIL‘ environment variable.
  17. Oracle IN 与 DISTINCT
  18. (4.2.32)各大热补丁方案分析和比较
  19. MCD19A2 MAIAC AOD 数据处理(三)均值+同日镶嵌+重投影(Grid转经纬度)
  20. 基于 keepalived 实现两台机器服务(主备)故障自动切换

热门文章

  1. 计算机原理寄存器基础知识,计算机组成原理基础知识
  2. Python基础-不要对实例属性和类属性使用相同的名字
  3. Android 使用经典蓝牙
  4. Element ui 组件库 使用技巧。
  5. 手把手教你使用Python打造一款简易搜索引擎
  6. 程序员的价值观与网络的复杂性
  7. 全文翻译 | 华为、北大、悉尼大学:最新视觉Transformer综述(2017-2020年)
  8. 目标检测YOLO实战应用案例100讲-基于深度学习的航拍图像YOLOv5目标检测研究及应用(论文篇)
  9. 60几行代码绘制丘比特爱情之箭!
  10. 如何快速爬取一个网站所有图片链接