在java的io、网络等方面的api中经常会遇到异常,当然也可能遇到error,但是真遇到error的话,那就太好了,你中奖了,等着程序死掉就行了,或者弹出一个警告,来提醒你中奖了。异常主要两类,一类是检查型异常(checked exception),还有一类是运行时异常(runtime exception),所有的异常都是这两类异常。
其实关于异常处理,有很多的讨论,有人认为遇到了异常就该处理掉,不该给程序留下隐患,也有的人认为异常不应该处理掉,要抛出去给调用者,这样才能让调用者知道问题所在。作为一个java的菜鸟,能有什么见解呢,只能选一种方式来处理异常,最主要要说服自己,这种方式是最好的,并且以后说的时候要理直气壮。
在工作中,我一般在底层不处理异常,会把异常抛出去上层,只在最上层处理,一般就是rest接口层面做处理,但是也不是完全不管直接抛出去,对于一些资源访问,你可以不处理异常情况,但是必须要保证你打开的资源在遇到异常的时候能正常关闭,比如用try...finally来做,否则导致什么内存泄漏也就不奇怪了,程序莫名其妙挂掉就更不奇怪了。举个例子,假如你写一个拷贝文件的程序,打开了源文件,然后在打开目标文件的时候报错了(什么没有权限。。。),这时候你如果直接抛出去,那么你打开的源文件没有被关闭,鬼知道会发生什么情况,jvm也说,你不管,我也不管,你去死吧(jvm会不会管我不知道,但是程序莫名其妙死掉是会发生的)。所以要关闭你打开的源文件流,但是没必要处理打不开目标文件这个异常,抛给调用者让他解决权限问题再说。
记得之前写爬虫的时候,经常会遇到有些网页半天打不开,一开始也没有设置连接超时就一直等在哪里,跑了半天,一看怎么没有数据进来,原来是在爬一个网站的时候,很多网页都打不开,一直卡在那里,线程全挂在那儿吹风,但是机器确并没有冷静下来。后面就设置超时时间什么巴拉巴拉,这时候超时以后,一般都会跑出异常,这里必须要自己处理掉异常,因为上面没有调用者了,你抛出去爽一时,然后整个线程都挂了,搞着搞着,程序就假死了,必须要重启整个爬虫服务。
如果直接抛出异常就没什么可说,鬼才管你调用者怎么处理,这里先撇清自己干系再说。那就说说如果自己必须要含着泪处理的异常,到底该怎么处理呢?我也不知道该怎么处理,我一般都是catch以后啥都不干,然后老大就问我这个网页为什么没数据,我就说肯定是请求超时,拿不到源码,当然没数据了,这有什么好解释的。老大就说,那你不如写个日志把错误的网页地址记录下来,以及当时抛出的异常异常,以后客户要说为什么那个网页数据没有的时候,可以拿出“作案工具”来证明是网站傻逼,不是自己无能。
总的来说,异常能不处理就不处理,如果非要自己处理,那就要保留证据,以此来表明自己的愤怒,以后还可以拿着这些来喷别人,怎么这么傻逼,还能出这个问题,这让我程序怎么跑,你当我程序能上天呀!
相关推荐
Java 异常处理习题 Java 异常处理是 Java 编程语言中的一种重要机制,用于处理程序在运行时可能出现的错误或异常情况。下面是关于 Java 异常处理的习题和知识点总结: 一、Java 异常处理关键字 * Java 中用来抛出...
java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理
本文将从 Java 异常的基本概念和语法开始,讲述 Java 异常处理的基本知识,分析 Java 异常体系结构,对比 Spring 的异常处理框架,阐述异常处理的基本原则,并提出了自己处理一个大型应用系统异常的思想,并通过设计...
### Java异常处理 #### 一、异常的基本概念 在编程领域中,异常是指程序在运行过程中遇到的问题或错误状态,这些问题通常会导致程序无法按照预期的方式继续执行。在Java语言中,异常处理是一种重要的机制,用于...
Java异常处理是编程中至关重要的一个环节,它允许开发者优雅地处理程序运行时可能出现的错误,确保程序的健壮性和稳定性。Java中的异常处理机制基于一个独特的概念——异常(Exception),这是一种表示程序运行中...
这个主题,"Java异常处理体系",涉及到Java如何优雅地处理程序运行时的异常,确保程序的健壮性和稳定性。这篇博文链接(已提供但无法直接访问)可能详细解释了Java异常处理的基本概念、机制以及最佳实践。 Java异常...
### 浅析JAVA异常处理机制 #### 一、Java异常处理机制概述 异常处理是Java语言中的一个重要机制,它能够确保程序在遇到不可预料的情况时仍能维持稳定运行。异常处理主要包括三个方面:捕获异常、控制程序流程以及...
Java异常处理是编程中至关重要的一个环节,它确保了程序在遇到错误时能够优雅地运行,而不是突然崩溃。本篇文章将深入探讨Java异常处理的概念、机制以及如何通过代码实例进行有效的异常管理。 Java异常处理的核心...
Java异常处理设计是Java编程中一个至关重要的环节,它直接影响到程序的稳定性和可维护性。在Java中,异常处理是通过try-catch-finally语句块来实现的,主要涉及两大类异常:编译时异常(Checked Exception)和运行时...
Java异常处理的9个最佳实践涵盖了开发者在进行Java编程时应当遵循的一系列规则和方法,以确保代码的健壮性和可维护性。异常处理是编程中的一个重要部分,它能够帮助我们更有效地管理和响应程序运行时的错误情况。 ...
Java异常处理是Java编程语言中的一个关键特性,它允许程序员优雅地处理程序运行时可能出现的错误和不正常状况。在Java中,异常是程序执行过程中出现的问题,它们中断了正常的控制流程,使得程序无法继续按照预期的...
Java异常处理是Java编程中一个至关重要的概念,它关乎到程序的健壮性和稳定性。在Java语言中,异常处理提供了一种机制,使得程序在遇到错误或非正常情况时能够优雅地处理问题,而不是突然崩溃。这个“java高端技术...
通过遵循上述最佳实践,开发者可以编写出更健壮、可维护的Java代码,有效地利用Java异常处理机制来提高程序的稳定性。同时,阅读并理解"Effective Java Exceptions"文档可以帮助进一步深化对Java异常处理的理解。
从给定的文件内容中可以看出,这是一系列Java程序示例,它们用来说明Java异常处理机制。异常处理是Java语言中一个非常重要的部分,它能够帮助程序在遇到错误情况时仍然可以正常运行或者优雅地退出。这些程序通过各种...
java异常练习题,北大青鸟学士后课后练习,主要是异常处理的小测验
以下是对Java异常处理的一些误区和经验总结。 **误区一:过度使用try-catch块** 有些开发者习惯于在每个函数的开始部分都套用try-catch块,以为这样可以捕捉所有可能出现的异常。实际上,这种做法使得代码变得混乱...
零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理...