首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java异常知识汇总

虽然可以解决异常问题,但是这样存在几个缺陷: 容易混淆。如果约定返回值为 -1 时表示出现异常,那么当程序最后的计算结果真的为 -1 ? 代码可读性差。...简单说,异常总是先被抛出,后被捕捉的。 任何Java代码都可以通过 Java 的throw语句抛出异常。 从方法中抛出的任何异常都必须使用throws子句。...它的上层也可以这样的处理,以此类推就会产生一条由异常构成的异常链。 通过使用异常链,我们可以提高代码的可理解性、系统的可维护性和友好性。...拜托了,就像我们一直的那样去解决事情吧。 NullPointerException:没有狗。请你先找一只狗,比如一只布烈塔尼獵犬,然后再试一次。...DigestException:应该注意自己的食物,消化不良也能变成严重的问题。 GeneralSecurityException:在某些地方一些事情并不安全。

50030

【Java提高十四】异常

虽然可以解决异常问题,但是这样存在几个缺陷: 1、 容易混淆。如果约定返回值为-11111时表示出现异常,那么当程序最后的计算结果真的为-1111? 2、 代码可读性差。...在这里一定要明确一点:异常代码某种程度的错误,尽管Java有异常处理机制,但是我们不能以“正常”的眼光来看待异常异常处理机制的原因就是告诉:这里可能会或者已经产生了错误,您的程序出现了不正常的情况,...但是如果仅仅只用throws抛出异常,那么的封装类,怎么办?? 我们有两种方式处理异常,一是throws抛出交给上级处理,二是try…catch具体处理。但是这个与上面有什么关联?...它的上层也可以这样的处理,以此类推就会产生一条由异常构成的异常链。 通过使用异常链,我们可以提高代码的可理解性、系统的可维护性和友好性。...所以如果一个方法会有异常发生时,但是又不想处理或者没有能力处理,就使用throws吧! 而throw是语句抛出异常

76340
您找到你想要的搜索结果了吗?
是的
没有找到

java提高篇之异常(下)

诚然在应用程序中,我们有时候不仅仅只需要封装异常,更需要传递。怎么传递?throws!!binge,正确!!但是如果仅仅只用throws抛出异常,那么的封装类,怎么办??...我们有两种方式处理异常,一是throws抛出交给上级处理,二是try…catch具体处理。但是这个与上面有什么关联?...它的上层也可以这样的处理,以此类推就会产生一条由异常构成的异常链。 通过使用异常链,我们可以提高代码的可理解性、系统的可维护性和友好性。...如果程序中,去掉e,也就是:throw new MyException(“文件没有找到–02″); 那么异常信息就保存不了,运行结果如下: ?...我们都知道异常意味着程序出现了不可预期的问题,程序它希望我们能够做出处理来拯救它,但是?一句ex.printStackTrace()搞定,这是多么的不负责任对程序异常情况不理不顾。

69630

JavaScript 编程精解 中文第三版 八、Bug 和错误

即使这样,它也允许一些不会报错的无意义的事情,比如计算true *'monkey'。 JavaScript 有一些报错的事情。 编写不符合语言语法的程序会立即使计算机报错。...然后,再做一些观察来检验这个理论 - 或者,如果没有理论,可以进一步观察来帮助你想出一个理论。 有目的程序中使用console.log来查看程序当前的运行状态,是一种不错的获取额外信息的方法。...如果只为自己编程,那么就可以忽略这些问题直到它们发生。 但是如果创建了一些将被其他人使用的东西,通常希望程序比只是崩溃做得更好。 有时候,正确的做法是不择手段继续运行。...在这样的函数中,必须一些事情,比如将结果包装在一个对象中,以便能够区分成功与失败。...因此,我们转而会去捕获那些特殊类型的异常。我们可以在catch代码块中判断捕获到的异常是否就是我们期望处理的异常如果不是则将其重新抛出。那么我们如何辨别抛出异常的类型

1.2K100

Java 异常处理的 9 个最佳实践

点击蓝色“程序猿DD”关注我哟 加个“星标”,不忘签到哦 ? 来源:开源中国 ---- 在 Java 中,异常处理是个很麻烦的事情。...但也应该在1-2个短句中解释异常的原因。这有助于的运营团队了解问题的严重性,并且还可以让更轻松分析任何服务突发事件。 如果抛出一个特定的异常,它的类名很可能已经描述了这种错误。...如果在 catch 子句中使用 Throwable ,它不仅会捕获所有异常,也将捕获所有的错误。JVM 抛出错误,指出不应该由应用程序处理的严重问题。...那么,可能正在分析一个不可能发生的问题。 所以,请不要忽略任何一个异常不知道代码将来如何改变。有人可能会在没有意识到会造成问题的情况下,删除阻止异常事件的验证。...正如在最佳实践#4中所解释的那样,异常消息应该描述异常事件。 堆栈跟踪告诉在哪个类,方法和行中抛出异常如果需要添加其他信息,则应该捕获异常并将其包装在自定义的信息中。

74820

Java 异常处理的 9 个最佳实践

在 Java 中,异常处理是个很麻烦的事情。初学者觉得它很难理解,甚至是经验丰富的开发者也要花费很长时间决定异常是要处理掉和抛出。 所以很多开发团队约定一些原则处理异常。...但也应该在1-2个短句中解释异常的原因。这有助于的运营团队了解问题的严重性,并且还可以让更轻松分析任何服务突发事件。 如果抛出一个特定的异常,它的类名很可能已经描述了这种错误。...如果在 catch 子句中使用 Throwable ,它不仅会捕获所有异常,也将捕获所有的错误。JVM 抛出错误,指出不应该由应用程序处理的严重问题。...那么,可能正在分析一个不可能发生的问题。 所以,请不要忽略任何一个异常不知道代码将来如何改变。有人可能会在没有意识到会造成问题的情况下,删除阻止异常事件的验证。...或者是抛出异常的代码被改变,现在抛出同一个类的多个异常,而调用的代码并不能阻止所有异常至少应该写一条日志信息,告诉大家这个不可思议的事发生了,而且有人需要检查它。 ?

77990

处理Java异常的9个最佳实践

Java中的异常处理不是一个简单的主题。初学者发现它很难理解,甚至有经验的开发者也可以花几个小时讨论如何以及应该抛出或处理哪些异常。 这就是为什么大多数开发团队都有自己的一套如何使用它们的规则。...因此,总是尝试找到最适合异常事件的类,例如抛出NumberFormatException而不是IllegalArgumentException。并避免抛出非特定的异常。...可以在catch子句中使用它,但永远不应该这样如果在catch子句中使用Throwable,它不仅会捕获所有异常; 它还会捕获所有错误。JVM抛出错误以指示应用程序无法处理的严重问题。...或者抛出异常的代码会被更改,现在抛出同一个类的多个异常,并且调用代码不会阻止所有这些异常至少应该写一条日志消息,告诉大家不可思议的事情刚刚发生,而且有人需要检查它。...如最佳实践#4中所述,异常消息应描述异常事件。堆栈跟踪告诉抛出异常的类,方法和行。 如果需要添加其他信息,则应捕获异常并将其包装在自定义异常中。但请务必遵循最佳做法9。

73750

认知IO流之 — InputStream

,直接抛出空指针异常如果起始读取位置小于0,或者读取长度小于0,或者需要读取的长度要比实际的长度大,抛出数组越界异常,若读取的长度为0,那么就不会读取任何字节。...如果 n 是负数,skip 方法总是返回 0,并且不跳过任何字节。...如果输入流通过调用 close() 方法关闭后,此方法的子类实现还会抛出 IOException。InputStream 类的 available 方法总是返回 0 。...在已经关闭的流上调用mark方法对流没有影响 InputStream 的 mark 方法不会做任何事情。...如果 markSupported 返回 false,则这个 reset 调用可能抛出 IOException,如果没有抛出 IOException 的话,则将流重置为固定状态,状态取决于输入流的特定类型及其创建方式

49710

Java基础系列(三十一):异常

但是要做到这些事情,并没有我们想象中的那么简单,因为检测或者引发这个错误的代码通常离错误的源头较远。...在这四种情况当中,如果出现前两种情况时,必须要告诉调用这个方法的程序员有可能抛出异常,一个方法必须声明所有可能抛出的受查异常,而非受查异常要么不可控制,要么就应该避免发生,如果方法没有声明所有可能发生的受查异常...但是,我们刚刚提到过,由于一些特殊的业务需求,我们可能会去定义自己的异常类,那么我们如何去定义一个自己的异常?...当然,也存在一些情况,我们必须将这个异常捕获,如果某个异常的法还是没有在任何的地方进行捕获,那么程序就会停止执行,并且在控制台打印出异常信息,其中包括异常的类型和堆栈的内容,但是这些信息对于我们的用户来说未免过于专业...当然,Java给我们提供了一种更好的解决方案,那就是finally子句,下面我们来看一个例子,之后就会对finally语句有一个非常清晰认识: try{ //1 //2,这里也许会抛出一个异常

44630

Java8编程思想之Java异常机制最佳实践

通过当前正在解决的问题环境,或许能知道如何处理除数为 0 的情况。但如果这是一个意料之外的值,也不清楚如何处理,那就要抛出异常,而不是顺着原来的路径继续执行下去。...异常允许我们(如果没有其他手段)强制程序停止运行,并告诉我们出现了什么问题,或者(理想状态下)强制程序处理问题,并返回到稳定状态。...这个程序也给了我们一些思路,当 Java 中的异常不允许我们回到异常抛出的地点时,那么如何应对如果把 try 块放在循环里,就建立了一个“程序继续执行之前必须要达到”的条件。...本例中的异常处理的棘手程度,对于应该创建不能失败的构造器是一个有力的论据,尽管这么并非总是可行。 注意,如果 dispose() 可以抛出异常,那么可能需要额外的 try 语句块。...close() 抛出异常。当你想到它时,这就是你想要发生的事情,但是如果必须自己编写所有这些逻辑,那么可能会错过一些错误。想象一下所有代码都在那里,程序没有考虑清理的所有含义,并且做错了。

1.1K20

NodeJS错误处理最佳实践

如何处理那些不符合预期的参数?我是应该抛出一个异常,还是把错误传递给一个callback。 我怎么在程序里区分不同的异常(比如“请求错误”和“服务不可用”)?...可能会发现在栈的某几层不断地处理相同的错误。这是因为底层除了向上层传递错误,上层再向它的上层传递错误以外,底层没有任何有意义的事情。...编写函数的实践 我们已经讨论了如何处理异常,那么当你在编写新的函数的时候,怎么才能向调用者传递错误?...如果连接在 1.1.2 的时候因为没有到主机的路由而失败了,每个层都不加处理都把异常向上抛出给调用者。...如果决定封装一个异常了,有几件事情要考虑: 保持原有的异常完整不变,保证当调用者想要直接用的时候底层的异常还可用。 要么用原有的名字,要么显示选择一个更有意义的名字。

1.5K41

Java中异常处理的9个最佳实践

异常是不可预知的,可是一旦它发生了就需要进行异常处理,可谓知错就改善莫大焉!异常处理是一种错误处理机制,如果不对异常任何处理,异常将会导致应用程序崩溃。...异常处理 当异常抛出时,应用程序的流程就会被中断,如果没能及时处理异常,应用程序将崩溃。...所以必须进行异常处理,哪怕是为了提高用户体验、记录问题日志、优雅退出应用程序等。...,它携带的信息仅告诉提供的字符串会导致异常,但如果异常名字不能表达异常种类,就需要提供更多的信息。...如果捕捉了Throwable,那么不仅仅是捕捉了异常,还捕捉了错误。但错误是无法恢复,它是被JVM抛出的严重错误,应用程序对这类错误是无能为力的。

58120

Java异常机制的最佳实践

通过当前正在解决的问题环境,或许能知道如何处理除数为 0 的情况。但如果这是一个意料之外的值,也不清楚如何处理,那就要抛出异常,而不是顺着原来的路径继续执行下去。...异常允许我们(如果没有其他手段)强制程序停止运行,并告诉我们出现了什么问题,或者(理想状态下)强制程序处理问题,并返回到稳定状态。...这个程序也给了我们一些思路,当 Java 中的异常不允许我们回到异常抛出的地点时,那么如何应对如果把 try 块放在循环里,就建立了一个“程序继续执行之前必须要达到”的条件。...本例中的异常处理的棘手程度,对于应该创建不能失败的构造器是一个有力的论据,尽管这么并非总是可行。 注意,如果 dispose() 可以抛出异常,那么可能需要额外的 try 语句块。...close() 抛出异常。当你想到它时,这就是你想要发生的事情,但是如果必须自己编写所有这些逻辑,那么可能会错过一些错误。想象一下所有代码都在那里,程序没有考虑清理的所有含义,并且做错了。

91630

Kotlin 和 Checked ExceptionKotlin 和 Checked Exception

这不但费时费力,看得眼花缭乱,还容易漏掉出错。显然让人这种事情是不现实的,所以绝大部分时候,程序员都不能确信这个函数调用不会出现异常。...在《编程的智慧》一文中,我已经讲述了如何正确的进行出错处理。如果滥用 CE,当然会有不好的后果,然而如果使用得当,就会起到事半功倍,提高代码可靠性的效果。...“大部分程序员根本不在乎这异常是什么,所以他们在程序的最上层加上 catch (Exception),捕获所有的异常。” “有些人的函数最后抛出 80 多种不同的异常,以至于使用者不知道怎么办。”...另外 CE 就像 union type 一样,如果不小心分析,不假思索就抛出异常,就会遇到他提到的“抛出 80 多种异常”的情况。...一来是因为我不想让人感觉我在“控制”他们,如何看待一个东西是他们的自由,是否采用一个东西是他们自己的决定。二来是因为我还没有时间和机会,去用 Kotlin 来实际的项目。

69620

札记:Java异常处理

异常概述 程序在运行中总会面临一些“意外”情况,良好的代码需要对它们进行预防和处理。...依然可以对返回值很多约定,使用参数来携带异常信息也是受限的),而是定义了Throwable相关的类层次来表示异常。...一个方法如果会产生已检查异常,那么在通过编译前,就必须在方法声明部分一起使用throws关键字声明将可能抛出这个异常,声明意味着告诉调用方法在执行期间可能会抛出对应的异常对象。...可以想象,声明抛出已检查异常,从某种含义上也是一种处理,实际上如果当前方法并没有合适的处理方式时,就继续抛出异常,而不去捕获它。...注意finally块需要放在最后,如果没有catch块的话直接就是try/finally的结构: try { // 一些语句,有可能抛出异常 } finally { // 一定会执行到 } finally

1.2K80

Java常见异常及解释

拜托了,就像我们一直的那样去解决事情吧。NullPointerException没有狗。请你先找一只狗,比如一只布烈塔尼獵犬,然后再试一次。...这条信息应该已经告诉谁干的和原因。如果没看见,可能也不该询问。 java.ioCharConversionException一直试图焚烧一些不燃物。...NotBoundException如果正在使用奴隶,请确认至少有一个人被绑住了。RemoteException这是一条远程抛出的特殊异常。...如果其他人的应用变得不稳定,以致于不能产生一条异常,相反可能会得到这条异常。请找到源头并提醒那位程序员这个错误。RMISecurityException马绍尔群岛共和国变得不稳定了。...DigestException应该注意自己的食物,消化不良也能变成严重的问题。GeneralSecurityException在某些地方一些事情并不安全。

67820

常见 Java 异常解释(恶搞版)

拜托了,就像我们一直的那样去解决事情吧。 NullPointerException 没有狗。请你先找一只狗,比如一只布烈塔尼獵犬,然后再试一次。...OptionalDataException 似乎认为一些可选数据是必须的。不要让事情变得复杂。...NotBoundException 如果正在使用奴隶,请确认至少有一个人被绑住了。 RemoteException 这是一条远程抛出的特殊异常。...如果其他人的应用变得不稳定,以致于不能产生一条异常,相反可能会得到这条异常。请找到源头并提醒那位程序员这个错误。 RMISecurityException 马绍尔群岛共和国变得不稳定了。...GeneralSecurityException 在某些地方一些事情并不安全。如果有足够的权力,应该随机入侵一个国家(最好在中东地区)。如果没有那种权力,至少应该有一把枪。

1K40

程序员大牛是如何编写程序的?在开始编码之前,他们会先在纸上推演程序吗?

他们以简单的方式思考可以长期解决问题的方案,他们愿意遵守规则;如果没有规则,他们也可以创建规则然后遵守。优秀的程序员也会读很多书,并且总是在技术上不断更新自己。...我感觉这很有趣,我去完成任何软件方面的事情没有感到压力,都是基于兴趣驱动的。我不断向朋友学习,从书籍中学习,项目,尝试做新的事情,我很少感到无聊,总有新东西要学。...还有一些其他方面的特殊情况,例如单词之间,句首和句尾的多个空格如何处理?对于从右到左的语言和没有单词分隔符的语言,如果我们在没有分隔符的情况下,混合使用阿拉伯语+英语单词又会发生什么?...我每天使用的提示检查模板是:1) 始终检查所有边缘情况;2)解析没有验证的数据;3)简化 if else 语言,如果可以就提前退出;d)快速崩溃,总是在需要开发人员立即修复代码的地方马上抛出异常,不要静默它们...;这里要与用户错误区分开,用户错误总是要处理的,而开发错误总是选择抛出

54130

【148期】最最最全面的Java异常面试及解答

非受检异常 编译器不会进行检查并且不要求必须处理的异常,也就说当程序中出现此类异常时,即使我们没有try-catch捕获它,也没有使用throws抛出异常,编译也会正常通过。...一般来讲,如果没有特殊的要求,我们建议使用RuntimeException异常。 3. JVM 是如何处理异常的?...但是一旦对一段代码加上try,就等于显示承诺编译器,对这段代码可能抛出异常进行捕获而非向上抛出处理。...Java异常处理最佳实践 在 Java 中处理异常并不是一个简单的事情。不仅仅初学者很难理解,即使一些有经验的开发者也需要花费很多时间来思考如何处理异常,包括需要处理哪些异常,怎样处理等等。...不要忽略异常 很多时候,开发者很有自信不会抛出异常,因此写了一个catch块,但是没有任何处理或者记录日志。

54620

Java异常处理最佳实践

不仅仅初学者很难理解,即使一些有经验的开发者也需要花费很多时间来思考如何处理异常,包括需要处理哪些异常,怎样处理等等。这也是绝大多数开发团队都会制定一些规则来规范进行异常处理的原因。...但是,使用 try 代码块是有原因的,一般调用一个或多个可能抛出异常的方法,而且,自己也可能会抛出一个异常,这意味着代码可能不会执行到 try 代码块的最后部分。结果就是,没有关闭资源。...因此,总是尝试寻找最适合异常事件的类,例如,抛出一个 NumberFormatException 来替换一个 IllegalArgumentException 。避免抛出一个不明确的异常。...不要忽略异常 很多时候,开发者很有自信不会抛出异常,因此写了一个catch块,但是没有任何处理或者记录日志。...说明:通过反射机制来调用方法,如果找不到方法,抛出NoSuchMethodException。什么情况会抛出NoSuchMethodError

70050
领券