对try-catch-finally异常处理的最新理解

try{

......

}catch(......){

}finally{

......

}

这个结构是用来处理Java所有可能出现的异常的,这个我很早其实就已经学过,不过最近看了个视频,感觉自己虽然明白这里边的东西都是什么时候执行的,但是还是不太清楚每一块具体要实现怎样的一个功能。

下面我具体说一下:

    一、首先,先说一下try块,try块里存放的是可能会出现问题的代码,对于Java编程来说,我们经常考虑不到哪里可能会出现错误,尤其是在一些代码中,它并不是总会出现错误,对于有些数据,它可以通过,但是有些数据就不行了,这些数据有些能看出来是哪里除了问题,有些看似好像并没有什么规律,对于这种问题有一个名字,叫做运行时异常,我还记得以前的时候,我经常会因为代码的问题责怪编译器,经常把错误归咎到编译器上,相信很多程序员会和我有同感,但是时间久了,我发现真的是自己too young,too naive,有些错误真的是我们自己犯下的,谷歌很聪明,他知道我们以后会遇到这种类似的问题,这个try块就是根据代码可能出现问题添加的,其实吧,之所以要加这个try-catch这个东西,我现在是这么理解的,其实这个并不是帮助我们调代码的,这个是要根据不同情况修改代码的,因为一旦我们的代码遇到错误,他就会停在那里了,就像是一个人,我们是他的父母,我们教育了他很久,结果他因为犯一个错误,想不开自杀了,这个不是我们希望见到的,我们希望他把错误改了就是了,不要产生更大的错误,对于怎么改我们继续下面的内容,这个就涉及到catch的事情了,简单来说,try块就是我们做父母的感觉孩子可能会出问题的地方(还记得有一个笑话讲的就是有一种热叫做妈妈觉得孩子热)。

    二、对于代码来说,一般代码犯下的错误一般都是可以弥补的,弥补错误的过程就是写在catch里的内容,catch可以写好几个,每个catch有一个参数,指明这个是程序可能出现的错误的类型,对于不同的错误,我们方便写出不同的处理,问题就解决了,程序就可以正常继续进行下去了。最坏的情况,比如说孩子犯了一个错误,一个劲的要自杀,我们做父母的还不知道他犯得是啥错误(他也不告诉我们),我们只能说,想开点,即便错误弥补不了,但这个坎必须得过,不能自杀(我们所说的自杀就是程序运行到错误,运行不下去,停止了),这个问题衍伸到程序里就是程序出错了,然而我们并不知道到底出了什么错误,这个时候我们可以通过catch检查Exception这个类型的错误,这个感觉有点像是玩赖,程序出错了,我们这样一句代码,就是说我们知道了,回到刚才的比方,孩子犯错误了,我们就说了一句话,没事,孩子也没改,就继续下去了,这样比较危险,所以一般没有这么用的,从Java内部来说,对于面向对象的这种语言,他有着严格的层次关系,里边有父类,有子类,Java规定每个类只能继承一个父类,这就意味着一个类可以有多个子类,但只能有一个父类,Exception这个类就是这样,他是所有异常类的父类,所以一提他全好使,但是由于不清楚具体是什么异常,所以很难对异常进行处理,前面问题都处理的差不多了,按理说我们处理的够用了,没错,程序写完这两个可以不写第三个,然而,第三个什么时候会用到呢,下面我们就要说。

    三、程序运行完了查找异常,解决异常,到了这里,好了没什么事情可做了,然而有些时候,有些问题无论如何都要处理,不管有没有异常出现,都需要处理(比如说流的关闭,连接的关闭,对象的销毁,资源的回收),这些时候,finally(终结者)来了,他来处理这些必须做的事情。(这个就像刚才的例子里,如果孩子不管犯了错误,还是没犯错误,我们都应该给他饭吃,这个使我们的义务)。

  哦了,这个就是我对Java的try-catch-finally异常处理的理解。

时间: 2024-08-01 17:05:04

对try-catch-finally异常处理的最新理解的相关文章

[Javascript] Try...Catch和异常处理

在JavaScript可以使用try...catch来进行异常处理.例如: try    {     foo.bar(); }   catch  (e)   {     alert(e.name  +   " :  "   +  e.message); } 目前我们可能得到的系统异常主要包含以下6种: EvalError: raised when an error occurs executing code in eval() RangeError: raised when a num

[math] 我对对数的最新理解

前言 作为资深学渣,每次遇到对数就极度恐慌.恐慌不是因为要考试---.而是因为不理解,只能靠死记硬背运算规则.不能进行有效的推理,这让我极度不爽,因为会忘记.故惶恐. 所以总是耿耿于怀,想要试图理解对数的本质.最近看到了一篇文章,再一次的加深了理解.故整理了一些自己最新的感悟记录如下: 新的理解 接下来说一下我的最新理解,那么对数到底要怎么理解呢? 我们要知道自然数与四则运算的演化过程,之后自然便能导出到底啥是对数了. 推理过程如下: 1.有一天,上帝创造了自然数.自然数除了天然存在以外,还有一

Java异常处理机制 —— 深入理解与开发应用

本文为原创博文,严禁转载,侵权必究! Java异常处理机制在日常开发中应用频繁,其最主要的不外乎几个关键字:try.catch.finally.throw.throws,以及各种各样的Exception.本篇文章主要在基础的使用方法上,进一步分析在开发中如何使用异常机制更合理. try-catch-finally try-catch-finally块的用法比较简单,使用频次也最高.try块中包含可能出现异常的语句(当然这是人为决定的,try理论上可以包含任何代码),catch块负责捕获可能出现的

面向对象的异常处理之深入理解java异常处理机制

什么是异常? 异常是对问题的描述,将问题的对象进行封装: 异常体系的特点:异常体系中的所有类以及建立的对象: 都具有可抛性,也就是说可以被throw和throws关键字所操作,只有异常体系具有该特点: throws定义在函数上,用于抛出异常类:throw定义在函数内,用于抛出异常对象,前者可以抛出多个,用逗号隔开. 代码加注释讲解: package demo1;/* * 有一个圆形和长方形* * */class NoValueException extends Exception{ NoValu

JavaScript中的try...catch和异常处理

在JavaScript可以使用try...catch来进行异常处理.例如: try { foo.bar();} catch (e) { alert(e.name + ": " + e.message);} 目前我们可能得到的系统异常主要包含以下6种: EvalError: raised when an error occurs executing code in eval() RangeError: raised when a numeric variable or parameter

快速排序最新理解

快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影. 总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速排序,快速搞定. 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序.它采用了一种分治的策

在java中的Try Catch块-------------异常处理(2)

1. Try块是什么? Try块是一块可能产生异常的代码块,一个Try块可能跟着Catch块或者Finally块,或者两者. Try块的语义: try{ //statements that may cause an exception } 2. Catch块是什么? 一个Catch块关联一个Try块,如果在Try块中有一个特定类型的异常发生,则响应的Catch块会执行,例如, 如果在Try块中arithmmetic exception发生,那么对应arithmmetic exception的Ca

java异常处理机制 -简单理解

说明:(1)异常是指 java 程序运行时(非编译)所发生的非正常情况或错误. (2) Error 表示应用程序本身无法克服和恢复的一种严重问题,程序只有死的份了,例如,说内存溢出和线程死锁等系统问题.         (3) Exception 表示程序还能够克服和恢复的问题.分为普通异常和系统异常.                 普通异常:也称checked异常,是运行环境的变化或异常所导致的问题,是用户能够克服的问题.如网络掉线,硬盘空间不足等.                 系统异常

Manifest文件的最新理解

今天看了Manifest文件内容的相关视频,感觉对知识的理解深刻了一些: 首先,先来说说这个文件的作用,这个文件可以说是聚集了很多个标签,其实对于每个主标签,在将来编译的时候,都会被处理成一个类,而标签里的属性也就成为了该类的成员变量,这些类究竟起到一个什么样的作用呢,主要无外乎标注了一些文件的执行顺序,以及一些权限的赋予,起到一个辅助的作用. 先来说说这个Manifest文件的整体结构,在默认的情况下,最外边标签是为了声明此文件为XML文件,以及XML文件的版本问题,接下来包裹的标签就到正题了