您的位置 首页 java

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

难度

初级

学习时间

20分钟

适合人群

零基础

开发语言

java

开发环境

  • JDK v11
  • IntelliJ IDEA v2018.3

提示

本教学属于系列教学,内容具有连贯性,本章使用到的内容之前教学中都有详细讲解。

1.try代码块作用域

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

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

try里面存放的是可能产生异常的代码块,这就意味着它里面可以存放一些 局部变量 ,那么这些局部变量可以被访问的作用域只能是try包裹的代码块里面。

下面分别来尝试不同位置对try代码块里面的变量进行访问。

友情提示:本章内容针对零基础或基础较差的同学比较友好,可能对于有基础的同学来说很简单,希望大家可以根据自己的实际情况选择继续看完或等待看下一篇文章。谢谢大家的谅解!

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

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

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

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

演示:

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

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

请观察程序运行结果。

代码:

Main类:

结果:

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

我们在try代码块里面定义了一个变量x:

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

执行结果:

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

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

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

演示:

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

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

请观察程序运行结果。

代码:

Main类:

结果:

错误信息:

文字版:

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

首先,我们在try代码块里面定义了一个变量x:

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

执行结果:

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

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

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

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

演示:

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

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

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

请观察程序运行结果。

代码:

Main类:

结果:

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

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

然后,我们在try代码块里面将其改变:

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

执行结果:

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

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

首先,我们先回答标题上的问题“定义在try代码块中的变量可以在catch代码块中访问吗?”答案是不能。

来一个例子说明一下。

演示:

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

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

请观察程序运行结果。

代码:

Main类:

结果:

错误信息:

文字版:

/Users/admin/Workspace/Java/Hello/src/main/Main.java

Error:(16, 40) java: 找不到符号

符号: 变量 x

位置: 类 main.Main

从运行结果来看,程序出错了。我们来看一下程序代码。

首先,我们在try代码块里面定义了一个变量x:

然后,我们在catch代码块里面直接访问了变量x,有人要问了,catch代码块不是只有捕获到异常的时候才会触发的吗?你怎么现在就直接在里面访问变量x,catch代码块会被执行吗?

先回答前面一个问题,catch代码块的确是捕获到异常时触发的。再回答后面这个问题,catch代码块里面直接访问这个变量,首先看的编译是否通过,如果编译都通不过,更别提运行了。所以这样写,是不考虑catch代码块是否被执行。

执行结果:

由此可见,我们定义在try代码块里面的成员不能被catch代码块访问。

总结

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

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

答疑

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

上一章

下一章

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

学习小组

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

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

全栈工程师学习计划

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

版权声明

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

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

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

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

关于作者: 智云科技

热门文章

网站地图