北京赛车pk拾走势图PK9-拾前三名走势图Java中的异常类型有哪些

Java中处理异常的9个最佳实践 - 编程语言 - ITeye资讯
引用原文:
作者:Thorben Janssen
译者:Teixeira10
【译者注】在本文中,作者介绍了9个处理异常的最佳方法与实践,以举例与代码展示结合的方式,让开发者更好的理解这9种方式,并指导读者在不同情况下选择不同的异常处理方式。
以下为译文:
Java中的异常处理不是一个简单的话题。初学者很难理解,甚至有经验的开发人员也会花几个小时来讨论应该如何抛出或处理这些异常。
这就是为什么大多数开发团队都有自己的异常处理的规则和方法。如果你是一个团队的新手,你可能会惊讶于这些方法与你之前使用过的那些方法有多么不同。
然而,有几种异常处理的最佳方法被大多数开发团队所使用。下面是帮助改进异常处理的9个最重要的方法。
1. 在Finally中清理资源或者使用Try-With-Resource语句
通常情况下,你在try中使用了一个资源,比如,之后需要关闭它。在这种情况下,一个常见的错误是在try的末尾关闭了资源。
public void doNotCloseResourceInTry() {
FileInputStream inputStream =
File file = new File("./tmp.txt");
inputStream = new FileInputStream(file);
// use the inputStream to read a file
// do NOT do this
inputStream.close();
} catch (FileNotFoundException e) {
log.error(e);
} catch (IOException e) {
log.error(e);
问题是,只要不抛出异常,这种方法就可以很好地运行。try内的所有语句都将被执行,资源也会被关闭。
但是你在try里调用了一个或多个可能抛出异常的方法,或者自己抛出异常。这意味着可能无法到达try的末尾。因此,将不会关闭这些资源。
所以应该将清理资源的代码放入Finally中,或者使用Try-With-Resource语句。
使用Finally
相比于try,无论是在成功执行try里的代码后,或是在catch中处理了一个异常后,Finally里的内容是一定会被执行的。因此,可以确保清理所有已打开的资源。
public void closeResourceInFinally() {
FileInputStream inputStream =
File file = new File("./tmp.txt");
inputStream = new FileInputStream(file);
// use the inputStream to read a file
} catch (FileNotFoundException e) {
log.error(e);
} finally {
if (inputStream != null) {
inputStream.close();
} catch (IOException e) {
log.error(e);
}
Java 7的Try-With-Resource语句
另一个选择是Try-With-Resource语句,在中更详细地说明了这一点。
如果你的资源实现了接口,就可以使用它,这正是大多数Java标准资源所做的。当你在try子句中打开资源时,它将在try被执行后自动关闭,或者处理一个异常。
public void automaticallyCloseResource() {
File file = new File("./tmp.txt");
try (FileInputStream inputStream = new FileInputStream(file);) {
// use the inputStream to read a file
} catch (FileNotFoundException e) {
log.error(e);
} catch (IOException e) {
log.error(e);
}
2. 给出准确的异常处理信息
你抛出的异常越具体越好。一定要记住,一个不太了解你代码的同事,也许几个月后,需要调用你的方法,并且处理这个异常。
因此,请确保提供尽可能多的信息,这会使你的API更容易理解。因此,你方法的调用者将能够更好地处理异常,或者通过额外的检查来避免它。
所以,要尽量能更好地描述你的异常处理信息,比如用代替,避免抛出一个不具体的异常。
public void doNotDoThis() throws Exception {
public void doThis() throws NumberFormatException {
}
3. 记录你所指定的异常
当你在方法中指定一个异常时,你应该在Javadoc中记录下它。这与前面提到的方法有着相同的目标:为调用者提供尽可能多的信息,这样他们就可以避免异常或者更容易地处理异常。
因此,请确保在Javadoc中添加一个@throws 声明,并描述可能导致的异常情况。
/**
* This method does something extremely useful ...
* @param input
* @throws MyBusinessException if ... happens
public void doSomething(String input) throws MyBusinessException {
}
4. 使用描述性消息抛出异常
这一最佳实践的理念与前两个相似。但这一次,你不用给调用方法的人提供信息。异常消息会被所有人读取,同时必须了解在日志文件或监视工具中报告异常时发生了什么。
因此,应该尽可能准确地描述问题,并提供相关的信息来了解异常事件。
别误会,你不需要写一段文字,而是应该用1-2个简短的句子解释异常的原因。这可以帮助开发团队理解问题的严重性,同时也使你能够更容易地分析任何服务事件。
如果抛出一个特定的异常,它的类名很可能已经描述了这种类型的错误。所以,你不需要提供很多额外的信息。一个很好的例子就是,当你以错误的格式使用字符串时,如NumberFormatException,它就会被类 java.lang.Long的构造函数抛出。
try {
new Long("xyz");
} catch (NumberFormatException e) {
log.error(e);
}
NumberFormatException已经告诉你问题的类型,所以只需要提供导致问题的输入字符串。如果异常类的名称不具有表达性,那么就需要提供必要的解释信息。
17:17:26,386 ERROR TestExceptionHandling:52 - java.lang.NumberFormatException: For input string: "xyz"
5. 最先捕获特定的异常
大多数IDE都可以帮助你做到这点,当你试图捕获不确定的异常时,它会报告一个不可到达的代码块。
问题是只有第一个匹配到异常的catch语句才会被执行,所以,如果你最先发现IllegalArgumentException,你将永远不会到达catch里处理更具体的NumberFormatException,因为它是IllegalArgumentException的一个子类。
所以要首先捕获特定的异常类,并在末尾添加一些处理不是很具体异常的catch语句。
你可以在下面的代码片段中看到这样一个try-catch语句的示例。第一个catch处理所有NumberFormatExceptions异常,第二个catch 处理NumberFormatException异常以外的illegalargumentexception异常。
public void catchMostSpecificExceptionFirst() {
doSomething("A message");
} catch (NumberFormatException e) {
log.error(e);
} catch (IllegalArgumentException e) {
log.error(e)
}
6. 不要在catch中使用Throwable
是exceptions 和 errors的父类。当然,你可以在catch子句中使用它,但其实你不应该这样做。
如果你在catch子句中使用Throwable,它将不仅捕获所有的异常,还会捕获所有错误。JVM会抛出错误,这是应用程序不打算处理的严重问题。典型的例子是或。这两种情况都是由应用程序控制之外的情况引起的,无法处理。
所以,最好不要在catch中使用Throwable,除非你完全确定自己处于一个特殊的情况下,并且你需要处理一个错误。
public void doNotCatchThrowable() {
// do something
} catch (Throwable t) {
// don't do this!
}
7. 不要忽略Exceptions
你是否曾经分析过只有用例的第一部分才被执行的bug报告吗?
这通常是由一个被忽略的异常引起的。开发人员可能非常确信它不会被抛出,并添加一个无法处理或无法记录它的catch语句。当你发现它的时候,你很可能就会明白一句著名的话“This will never happen”。
public void doNotIgnoreExceptions() {
// do something
} catch (NumberFormatException e) {
// this will never happen
}
是的,你可能在分析一个不可能发生的问题。
所以,请千万不要忽略一个例外。你不会知道代码在将来会发生什么变化。有些人可能会删除阻止异常事件的验证,而没有意识到这造成了问题。或者抛出异常的代码被更改,现在抛出了同一个类的多个异常,而调用的代码并不能阻止所有这些异常。
你至少应该写一个日志信息,告诉每个人,需要检查一下这个问题。
public void logAnException() {
// do something
} catch (NumberFormatException e) {
log.error("This should never happen: " + e);
}
8. 不要记录和抛出一个异常
这可能是最常被忽略的。你可以在许多代码片段或者库文件里发现,有异常会被捕获、记录和重新抛出。
try {
new Long("xyz");
} catch (NumberFormatException e) {
log.error(e);
}
当它发生时记录一个异常,然后重新抛出它,以便调用者能够适当地处理它,这可能会很直观。但是它会为同一个异常写多个错误消息。
17:44:28,945 ERROR TestExceptionHandling:65 - java.lang.NumberFormatException: For input string: "xyz"
Exception in thread "main" java.lang.NumberFormatException: For input string: "xyz"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:589)
at java.lang.Long.(Long.java:965)
at com.stackify.example.TestExceptionHandling.logAndThrowException(TestExceptionHandling.java:63)
at com.stackify.example.TestExceptionHandling.main(TestExceptionHandling.java:58)
不添加任何额外的信息。正如在上述第4个中所解释的那样,异常消息应该描述异常事件。堆栈会告诉你在哪个类、方法和行中异常被抛出。
如果你需要添加额外的信息,应该捕获异常并将其包装在一个自定义的信息中。但要确保遵循下面的第9条。
public void wrapException(String input) throws MyBusinessException {
// do something
} catch (NumberFormatException e) {
throw new MyBusinessException("A message that describes the error.", e);
}
因此,只需要捕获一个你想要处理的异常,在方法中指定它,并让调用者处理它。
9. 包装异常
有时最好捕获一个标准异常并将其封装到一个定制的异常中。此类异常的典型例子是应用程序或框架特定的业务异常。这允许你添加额外的信息,并且也可以为异常类实现一个特殊的处理。
当你这样做时,确保引用原始的异常处理。Exception类提供了一些特定的构造函数方法,这些方法可以接受Throwable作为参数。否则,你将丢失原始异常的堆栈跟踪和消息,这将使你很难分析导致异常的事件。
public void wrapException(String input) throws MyBusinessException {
// do something
} catch (NumberFormatException e) {
throw new MyBusinessException("A message that describes the error.", e);
正如你所看到的,在抛出或捕获异常时,有许多不同的事情需要考虑。以上大多数方法都可以提高代码可读性或API可用性。
异常通常是一个错误处理机制和一个通信媒介。因此,你应该确保同事一起讨论想要应用的最佳实践和方法,以便每个人都理解通用概念并以相同的方式使用它们。
相关资源推荐Java 9 新特性来临——模块化 - 简书
Java 9 新特性来临——模块化
今年,2017年,我们将迎来 Java 语言的 22 岁生日,22岁,对于一个人而言,正是开始大展鸿图的年纪,可是对于日新月异的科技圈中的一门开发语言而言,却是一个傲视群雄的老态龙钟的年纪。
感谢 互联居 的技术分享文章,有兴趣的朋友可以去搜索微信公众号
JVM 语言发展史
JVM 家族也是在这22年中茁壮发展,并且都秉承着 Java 的革命口号:一处编译,随处运行。
那么,JVM 的带头人 Java 在 9.0 的版本中带来了什么变化呢?
今天介绍一个Java 9的功能,模块化(Modular);这可能使Java有史以来最大的Feature,它将自己长期依赖JRE的结构,转变成以Module为基础的组件,这感觉就像一个壮士,需要把自己的胳膊,腿等,一个个拆下来,并且还能够正常运行工作,难度可想而知。虽然,Java 9尚未发布,但这个功能让人期盼和煎熬了好多年了。
从1995年的第一天起,Java带着一个口号,“Write once , Run anywhere” ,一路走来,从学院派的实验语言,变成开发者最青睐的语言,然后成为企业开发的统一语言,二十弱冠。时光如斯,Java也从一个创新的语言,慢慢变成一种“传统”,“老旧”,“经典”语言,同时也接受很多新鲜语言的挑战,例如Go,Scalar等。
Java从来就不是一种完美的语言:GC的效率总是给高并发程序员带来不少痛苦和调整,Classpath地狱总是让很多错误诡异的发生,高级语言特性总是在JCP(Java Community Process)里面踢皮球而无法落地,异步模式的多线程编程总是有陡峭的学习曲线,Oracle JDK和OpenSDK总是有扯不清楚的关系,孤芳自傲且让人崩溃的J2EE框架。
但是,我还是最喜欢Java编程语言,不仅因为使用了20年,更有两个原因:
Java的生态:几乎所有开发库都支持Java语言,Java是打开程序世界的钥匙。
Java语言的开源:Java源代码设计流畅,可以学到很多设计技能。
模块化从Java 7就开始计划推出 ,但由于其过于复杂,不断跳票 Java 7和Java 8,终于计划在Java 9中推出,我们一起拭目以待吧! 目前,Java 9的功能基本开发完毕,剩下半年的时间,解决各种Bug。下面是Java 9的时间表!
Java 9的时间表
Java 9中最重要的功能,毫无疑问就是模块化(Module),代码名字叫做Jigsaw(拉锯),这个拉锯项目拉了几年,终于要把庞大冗余的Java锯成一个个的Module,方便开发和部署。熟悉Java的同学,都知道JRE有一个超级大rt.jar(例如,Java 8的rt.jar中有65M),运行一个hello world,你也需要一个数百兆的JRE环境,如果在J2EE环境,情况将变得复杂无比。另外,如果你没有深受Classpath Hell所害,说明你还不是一个深度Java程序员。
Java 9 模块化优势对比图
模块化的功能有几个目的:
让Java的SE程序更加容易轻量级部署
改进组件间的依赖管理,引入比Jar粒度更大的Module
改进性能和安全性
如果用更加简单解释,那就是“解决Classpath地狱问题,改进部署能力”。Module的内容比较多,为了由浅入深,我按照一些问题和我的理解来介绍模块化。
1.什么是Java Module(模块)
模块就是代码和数据的封装体,代码是指一些包括类型的Packages。Package是一些类路径名字的约定,而模块是一个或多个Packages组成的一个封装体。
什么是模块化
2. 模块的代码例子
模块的是通过module-info.java进行定义,编译后打包后,就成为一个模块的实体;在模块的定义文件中,我们需要指定模块之间的依赖靠关系,可以exports给那些模块用,需要使用那些模块(requires) 。下面是一个例子:
module com.foo.bar {
requires org.baz.
exportscom.foo.bar.
exportscom.foo.bar.
META-INF/MANIFEST.MF
module-info.class
com/foo/bar/alpha/AlphaFactory.class
com/foo/bar/alpha/Alpha.class
3.JDK8 和JDK9有什么不一样?
JDK8的JRE的部署是一个单体模式,一个超大的rt.jar(大约60多兆),tools.jar也有几十兆,即使使用一个Hello Worlds,你也需要一整套上百兆的JRE环境。
JAVA 9 引入模块后,将所有的类组织成模块形式,模块之间有着优美的依赖关系(至少现在很整齐,不知道过几个版本会不会继续保持优雅)。
![3.JDK8 和JDK9有什么不一样?
JDK8的JRE的部署是一个单体模式,一个超大的rt.jar(大约60多兆),tools.jar也有几十兆,即使使用一个Hello Worlds,你也需要一整套上百兆的JRE环境。
JAVA 9 引入模块后,将所有的类组织成模块形式,模块之间有着优美的依赖关系(至少现在很整齐,不知道过几个版本会不会继续保持优雅)。
Java 8的包之间的依赖关系
Java9的依赖关系(模块之间依赖关系)
4. Public 不再意味着Accessible(可访问了)
模块之间的关系被称作readability(可读性),代表一个模块是否可以找到这个模块文件,并且读入系统中(注意:并非代表可以访问其中的类型)。在实际的代码,一个类型对于另外一个类型的调用,我们称之为可访问性(Accessible),这意味着可以使用这个类型; 可访问性的前提是可读性,换句话说,现有模块可读,然后再进一步检测可访问性(安全)。
在Java 9中, Public不再意味着任意的可访问性!
Public不再意味着任意的可访问性
模块之间的关联关系
5.什么是模块的Transitive 引用(间接引用)
举个例子:
因此标记了transitive可以可以提供一个间接可读性。在myapp中,可以直接引用Logger类了。
可读性示意图
6. Module 和Maven是什么关系
看完Module,这么详细的表达依赖关系,是不是和什么软件很相似?是不是想起了Maven还是Gradle? 仔细想象,Modular和它们还是不一样的。
Modular是系统内置用于表述组件之间的关系,对于版本的管理还是处于最原始的状体。它管理一种强制的依赖关系。
Maven有两个核心功能 a) 组件的依赖管理,特别是版本的管理,这种依赖是逻辑上的,并非强制的 b)管理开发过程中的各种任务,初始化,测试等等。
7. JLink介绍
JLink是将Module进行打包的工具,帮助目标机器的部署。打包后的文件将非常精简。
jLink工作示意图
jLink工作指令示范
8 Module的原理和实现
在内部实现中,整个过程非常繁琐复杂,大概有几件事情;
a)将系统内部类进行模块化
这样不用在区分太多J2ME, J2SE,J2EE了,大家都是用模块作为沟通语言。这需要整理所有的类和它们调用关系,调用频次等,把系统类模块化,这可能最复杂的一部分,不过结果是完美的。
b) 将ClassLoader分级
将ClassLoader分为三个级别,Bootstrap Loader具有最高优先级和权限,主要是核心的系统类;Platform Loader用于扩展的一些系统类,例如SQL,XML等;Application Loader主要用于应用程序的Loader。在这三个级别的Loader下面有一个统一Module 管理,用于控制和管理模块间的依赖关系,可读性,可访问性等。 注意,ClassLoader在Java 9中的类装载逻辑和之前一样,但是,通过模块管理系统,ClassLoader.FindClass的能力,将被限制在readable&accessible的条件下,而不是之前的简单的Public条件。
只要坚持21天,这就是你接下来的习惯。
文 by / 林本托 Tips做一个终身学习的人。 在此章节中,主要介绍以下内容: 在JDK 9之前Java源代码用于编写,打包和部署的方式以及该方法的潜在问题 JDK 9中有哪些模块 如何声明模块及其依赖关系 如何封装模块 什么是模块路径 什么是可观察的模块 如何打印可观...
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式...
Java 基础思维导图,让 Java 不再难懂 - 工具资源 - 掘金思维导图的好处 最近看了一些文章的思维导图,发现思维导图真是个强大的工具。了解了思维导图的作用之后,觉得把它运用到java上应该是个不错的想法,这样回顾知识点的时候一目了然,快速知道自己的短板。 思维导图...
官方文档:https://docs.oracle.com/javase/9/index.html 关于 java9的新特性,官方原文:https://docs.oracle.com/javase/9/whatsnew/toc.htm 这玩意就是一个列表,具体的技术细节需要根...
Oracle 在 9月22 日终于发布了 jdk 9
(难产了好长时间啊%&_&%),java在走过了22个年头之后迎来了新的版本,作为一门使用率排在第一的编程语言(截止到现在10月份), What 's new ??
话不多说,让我们看一下这次发布带给我们的一个主要...
一 二 1.为什么要将对外开放确定为我国的基本国策? (1)对中国长期停滞落后的历史教训深刻总结的结果。经过30多年的改革开放,我国经济正在实行从引进来到引进来和走出去并重的重大转变,只有坚持对外开放,深度融入世界经济,才能实现可持续发展。 (2)对当代世界经济、科技发展和...
唯有对自己卓越的才能和独特的价值有坚定、不可动摇之确信的人才被称为骄傲。——叔本华
刚才听到了my sole 这首纯音乐,忧伤还是快乐,唉
文/鱼筱豆 01 有些人看上去很聪明,其实却傻的出奇;有些人看上去很傻,却特别聪明伶俐。聪明的人总是觉得别人都比他傻,殊不知其他人都拿他当大傻子;而平时傻乎乎的人,在很多时候却会做出很多连聪明的人都无法理解的事情。 我知道这样一个人,她每天流连在大街上,每天都自言自语,大家...
今日学习内容 Ubuntu系统的安装和配置 linux下一些常用操作的快捷方式 终端下的一些操作命令ls -a:查看所有文件或目录,包括隐藏文件以&.&开头的文件或目录都是隐藏文件ls -l:查看目录或文件属性ls -d:列出目录自身信息,常与-l选项联用 总结 今天是正式...
英语语法大表 曲刚语法大表 语音表北京PK拾趋势专家 2.1
版本说明软件地址7.9.0查看1.8查看3.16 Build 查看17.9查看11.2.4查看
  全新推出的趋势计划与传统的公式计划有所不同,公式计划只是基于公式计算而形成的结果,趋势计划是在对各种指标、条件或玩法的趋势分布、技术指标形态的分析的基础上形成的推荐,强调的是客观统计和中长期的一个结果,更具科学性,表现更稳定。
  趋势分析、走势分析结合强大的组号过滤功能,是彩民朋友玩转彩票的不可多得的强大利器。
  本软件设计细腻,结构合理,使用方便,性能优越。
  条件应有尽有,涵盖量大,支持毒胆、胆组、组选复式、历史处理、系列、形态系列、和值系列、振幅系列、尾数系列、遗漏系列、扩展系列、组合系列、余数系列、行列系列(还支持断组、直选复式、大底、不定位合差)等,还充分支持自定义指标、自定义图表的添加和设计。
  既有走势,又有趋势,全方位、立体式的图表系统让用户得心应手。
  用户设置条件可以随心所欲、可以边分析边形成条件,条件可以任意分组、分层容错;软件趋势运算支持多条件同屏显示、支持交集、并集组号过滤、一键提取号码,支持手工画线、放大,支持条件收藏、保存、载入,支持指标参数个性修改。
  软件采用了专业的算法引擎,不论是复杂、多层次的容错过滤,还是复杂的指标的趋势计算,还是多条件的同屏显示、提取号码,都计算精确、速度奇快。
相关合集:
相关热搜:
北京赛车是一种高频福利彩票,每5分钟开奖1次。北京赛车pk10是一款提供北京赛车pk10直播和开奖记录的软件,方便大家查看自己是否中奖,同时还提供猜冠军,精确前二,精确前三名、精确前四名等功能。为了帮助大家选好,华军软件整理了一些北京赛车助赢和计划软件,包括北京赛车pk10计划软件、北京赛车pk10助赢软件等,帮助大家分析数据、筛选号码,帮你中大奖,需要的朋友快来下...
高速下载地址
联通下载地址
电信下载地址
移动及其他下载地址
(您的评论需要经过审核才能显示)
下载完了怎么才能链接到手机
北京PK拾趋势专家帮我了很大忙,感谢华军软件园
下载完了怎么用啊
我发现2.1的北京PK拾趋势专家相比上一版不容易崩溃了,不错不错
北京PK拾趋势专家很不错,但是为啥360有时候会误报,好无语,信任就可以了
很好,北京PK拾趋势专家2.1已安装并使用了,谢谢!
北京PK拾趋势专家有没有破解版的啊,有的朋友麻烦推荐一下
这个2.1的北京PK拾趋势专家我发现还是有些历史遗留的小毛病,也不知道下次更新会不会改过来。
北京PK拾趋势专家2.1下载好慢,不知道是不是我网速问题,继续等待……
彩票软件推荐
9.5.7 Build0130
5.26 Build
1.07 永久免费版
5.28 绿色版
17.9 全能版
热门关键词java中error和exception分别有几种?_百度知道
java中error和exception分别有几种?
我只知道:
error:语法错误、逻辑错误、运行错误
exception:越界、数据丢失
//------现有资料------
java中的异常多了,但是常见的异常也就如下几种:
import java.nio.*;
import java.util.*;
class TestException {
public static void...
我有更好的答案
常见的error有:ArithmeticException(除数为0的异常), BufferOverflowException(缓冲区上溢异常), BufferUnderflowException(缓冲区下溢异常), IndexOutOfBoundsException(出界异常), NullPointerException(空指针异常), EmptyStackException(空栈异常), IllegalArgumentException(不合法的参数异常), NegativeArraySizeException, NoSuchElementException, SecurityException, SystemException, UndeclaredThrowableException常见的exception有:1. java.lang.NullPointerException  异常的解释是&程序遇上了空指针&,简单地说就是调用了未经初始化的对象或者是不存在的对象,即把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始化(如果要调用的话)  2. java.lang.ClassNotFoundException  异常的解释是&指定的类不存在&。  3. java.lang.ArithmeticException  这个异常的解释是&数学运算异常&,比如程序中出现了除以零这样的运算就会出这样的异常。  4. java.lang.ArrayIndexOutOfBoundsException  异常的解释是&数组下标越界&,现在程序中大多都有对数组的操作,因此在调用数组的时候一定要认真检查,看自己调用的下标是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常。  5. java.lang.IllegalArgumentException  这个异常的解释是&方法的参数错误&,比如g.setColor(int red,int green,int blue)这个方法中的三个值,如果有超过255的也会出现这个异常,因此一旦发现这个异常,我们要做的,就是赶紧去检查一下方法调用中的参数传递是不是出现了错误。  6. java.lang.IllegalAccessException  这个异常的解释是&没有访问权限&,当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了Package的情况下要注意这个异常
DestroyFailedException, UserException, XAException, LineUnavailableException, NamingException, NoninvertibleTransformException, IllegalAccessException, NoSuchFieldException, AWTException, ExpandVetoException, FontFormatException一楼的这位老大你在误人子弟啊Error 是 Throwable 的子类,用于指示合理的应用程序不应该试图捕获的严重问题。大多数这样的错误都是异常条件, MimeTypeParseException, BadBinaryOpValueExpException, BadLocationException, MidiUnavailableException, IOException, JMException: AclNotFoundException, PropertyVetoException, RefreshFailedException, RemarshalException, RuntimeException, SAXException, ServerNotActiveException, SQLException, TimeoutException, TooManyListenersException, DatatypeConfigurationException。 直接已知子类, TransformerFactoryConfigurationError: AnnotationFormatError, AssertionError, AWTError, CoderMalfunctionError, InvalidPreferencesFormatException, InvalidTargetObjectTypeException, InvocationTargetException,但它也是 Error 的子类,因为大多数应用程序都不应该试图捕获它, InvalidMidiDataException, FactoryConfigurationError, LinkageError, ThreadDeath, ApplicationException, ActivationException, AlreadyBoundException, TransformerException, GSSException, LastOwnerException, URISyntaxException, BadStringOperationException, BrokenBarrierException, CertificateException, ClassNotFoundException, CloneNotSupportedException, DataFormatException, BackingStoreException, BadAttributeValueExpException,它指出了合理的应用程序想要捕获的条件。直接已知子类, IllegalClassFormatException, InstantiationException, InterruptedException, IntrospectionException, InvalidApplicationException, NoSuchMethodException, NotBoundException, VirtualMachineError Exception 类及其子类是 Throwable 的一种形式, UnmodifiableClassException, GeneralSecurityException。虽然 ThreadDeath 错误是一个“正规”的条件, NotOwnerException, ParseException, ParserConfigurationException, PrinterException, PrintException, PrivilegedActionException, UnsupportedAudioFileException, UnsupportedCallbackException, UnsupportedFlavorException, UnsupportedLookAndFeelException, ExecutionException
本回答被提问者采纳
.一除以零不是错误.字面的意思也能明白啊.error指错误exception是异常.Exception太多了.而且还可以自己定义异常.,而是异常.晕.
错误是可见的,大多是由程序本身引起的逻辑或者其它的问题;异常是不可见的,是在执行某些操作是引起的,但是可以监测和捕捉,异常有很多类
其他1条回答
为您推荐:
其他类似问题
exception的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 北京快乐8大小走势图 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信