您的位置 首页 java

“全栈2019”Java异常第四章:catch代码块作用域详解

难度

初级

学习时间

20分钟

适合人群

零基础

开发语言

Java

开发环境

  • JDK v11
  • IntelliJ IDEA v2018.3

友情提示

  • 本教学属于系列教学,内容具有连贯性,本章使用到的内容之前教学中都有详细讲解。
  • 本章内容针对零基础或基础较差的同学比较友好,可能对于有基础的同学来说很简单,希望大家可以根据自己的实际情况选择继续看完或等待看下一篇文章。谢谢大家的谅解!

1.catch代码块作用域

首先,我们来看看catch代码块作用域是哪一块:

上图中红色左大括号和右大括号包裹的部分就是catch代码块作用域。

2.catch作用域内中的成员只在该作用域内有效

什么叫“catch作用域内中的成员只在该作用域内有效”?

就是声明和定义在catch代码块中的变量只在catch代码块中有效,出了catch代码块就不能被使用。

下面通过一个例子来说明。

演示:

请在try代码块中制造一个异常。

请在catch代码块中定义一个变量x。

请在catch代码块中访问这个变量x。

请观察程序运行结果。

代码:

Main类:

结果:

从运行结果来看,程序没有任何问题,结果也符合预期。简单的来看一下程序代码。

我们在try代码块里面故意制造了一个异常,为什么要故意制造异常?因为catch只有捕获到异常时才会被执行:

然后,我们在catch代码块里面定义了一个变量x:

接着,我们直接在catch代码块里面访问了变量x:

执行结果:

由此可见,我们在catch代码块里面直接访问catch代码块里面的成员是可以的。

接下来,我们试试外catch代码块之外能不能访问此变量x。

3.catch代码块内的成员不能被外部访问

演示:

请在try代码块中故意制造异常。

请在catch代码块中定义一个变量x。

请在catch代码块外访问这个变量x。

请观察程序运行结果。

代码:

Main类:

结果:

错误信息:

文字版:

从运行结果来看,程序出现了错误。来简单看看程序代码。

首先,我们在try代码块中故意制造了一个异常:

然后,我们在catch代码块里面定义了一个变量x:

接着,我们在catch代码块之外访问了变量x:

执行结果:

程序说找不到这个变量x,在Main类的20行,该行正是我们使用变量x所在的行。由此可见,我们在catch代码块中定义的成员不能在catch代码块之外使用。

4.catch代码块之外定义的成员是可以在catch代码块里面被访问

我们在catch代码块里面定义的变量不能在catch代码块之外使用,如果事先定义好变量,然后被catch代码块访问改变其值,之后再使用该变量,请问值改变了吗?

我们来一个例子演示一下。

演示:

请在try代码块中故意制造一个异常。

请在catch代码块外定义一个变量x。

请在catch代码块中访问这个变量x,然后改变其值。

接着,在catch代码块之外访问变量x。

请观察程序运行结果。

代码:

Main类:

结果:

从运行结果来看,程序没有问题。我们来看一下该程序代码。

首先,我们在catch代码块之外定义了一个变量x:

然后,我们在try代码块里面故意制造了一个异常:

接着,我们在catch代码块里面改变这个变量x:

接着,我们在catch代码块之外访问这个变量x:

执行结果:

由此可见,当我们事先在catch代码块之外定义变量x,然后经过catch代码块访问之后,再去顺着程序流程往下访问它是可以的。

5.定义在try代码块中的变量可以在catch代码块中访问吗?

上一章已经演示过,这里呢,就不再重复演示。如果有不清楚的同学请在评论中留言或私信我们,我们会一对一进行辅导,请大家谅解!

结论是:我们定义在try代码块里面的成员不能被catch代码块访问。

总结

  • 定义在catch代码块内的成员只能在本作用域中被访问。
  • 定义在catch代码块外的成员可以被catch代码块访问。

至此,Java中catch代码块作用域相关内容讲解先告一段落,更多内容请持续关注。

答疑

如果大家有问题或想了解更多前沿技术,请在下方留言或评论,我会为大家解答。

上一章

下一章

“全栈2019”Java异常第五章:一定会被执行的finally代码块

学习小组

加入同步学习小组,共同交流与进步。

  • 方式一:关注头条号Gorhaf,私信“Java学习小组”。
  • 方式二:关注公众号Gorhaf,回复“Java学习小组”。

全栈工程师 学习计划

关注我们,加入“全栈工程师学习计划”。

版权声明

原创不易,未经允许不得转载!

文章来源:智云一二三科技

文章标题:“全栈2019”Java异常第四章:catch代码块作用域详解

文章地址:https://www.zhihuclub.com/184672.shtml

关于作者: 智云科技

热门文章

网站地图