数组该内存不能为read

该内存不能为read  时间:2021-01-16  阅读:()

异常处理(视频讲解:49分钟)在程序中总是存在各种错误,使应用程序在运行时终止.
为了在程序执行过程中发生错误时能正常运行,可以使用Java提供的异常处理机制捕获可能发生的异常,对异常进行处理并使程序能正常运行.

通过阅读本章,您可以:(了解异常的概念(了解异常的分类(掌握如何获取异常信息(掌握如何处理异常(了解如何抛出异常(了解自定义异常(了解异常的使用原则11.
1异常概述视频讲解:光盘\TM\lx\11\异常概述.
exe假设一辆轿车发生了故障,可能是某个零件发生了问题,也可能是没有油了.
如果是由于零件问题,只需要更换零件就可以解决;如果是没有油了,只需要加满油就可以正常行驶了.
程序中的异常与此类似,就对程序中可能发生异常的语句进行处理,使程序能够正常执行.

在程序开发过程中,可能存在各种错误,有些错误是可以避免的,而有些错误却是意想不到的,在Java中把这些可能发生的错误称为异常.
图11.
1说明了异常类的继承关系.

图11.
1异常类的继承关系图从图11.
1中可以看出,Throwable类是所有异常类的超类,该类的两个直接子类是Error和Exception.
其中,Error及其子类用于指示合理的应用程序不应该试图捕获的严重问题,Exception及其子类给出了合理的应用程序需要捕获的异常.

11.
2异常的分类视频讲解:光盘\TM\lx\11\异常的分类.
exe在Java中可以捕获的异常(即Exception类的子类)分为可控式异常和运行时异常两种类型.

11.
2.
1可控式异常在Java中把那些可以预知的错误,例如从文件中读取数据、对数据库进行操作等,在程序编译时就能对程序中可能存在的错误进行处理,并给出具体的错误信息,我们把这些错误称为可控式异常.
表11.
1中列出了常用的可控式异常及说明.

表11.
1常用可控式异常及说明异常说明IOException当发生某种I/O异常时,抛出此异常SQLException提供关于数据库访问错误或其他错误信息的异常ClassNotFoundException类没有找到异常NoSuchFieldException类不包含指定名称的字段时产生的信号NoSuchMethodException无法找到某一特定方法时,抛出该异常【例11.
1】创建项目01,在项目中创建Example_01类,在该类中加载一个不存在的类,观察发生的异常.
(实例位置:光盘\TM\sl\11\1)publicclassExample_01{privateintnum=10;成员变量publicintgetNum(成员方法returnnum;返回成员变量的值}publicvoidsetNum(intnum)成员方法this.
num=num;设置成员变量的值}publicExample_01(类的构造方法try{Class.
forName("com.
mingrisoft.
Test");//装载com.
mingrisoft包中的Test类}catch(ClassNotFoundExceptione){e.
printStackTrace();}System.
out.
println("测试.
在控制台输出"测试.
"}publicstaticvoidmain(String[]args){Example_01exam=newExample_01();//创建类的实例exam.
setNum(888)调用setNum()方法设置成员变量num的值为888System.
out.
println(exam.
getNum(调用getNum()方法输出成员变量的值888}}运行结果如图11.
2所示.
图11.
2ClassNotFoundException异常11.
2.
2运行时异常在Java中有些错误是不能被编译器检测到的,例如,在进行除法运算时,除数为零;试图把一个不是由数字组成的字符串使用Integer类的parseInt()方法转换为整数等,Java的编译器是检测不到的,因而能够正常编译,但是在运行时就会发生异常,我们把这些异常称为运行时异常.
表11.
2列出了常用的运行时异常及说明.

表11.
2常用的运行时异常及说明方法说明IndexOutOfBoundsException指示某集合或数组的索引值超出范围时抛出该异常NullPointerException当应用程序试图在需要对象的地方使用null时,抛出该异常ArithmeticException当出现异常的运算条件时,抛出此异常IllegalArgumentException抛出的异常表明向方法传递了一个不合法或不正确的参数ClassCastException当试图将对象强制转换为不是实例的子类时,抛出该异常【例11.
2】通过Integer类的实例创建Object对象o,观察将Object对象o强制转换为字符串时发生的异常.

Objecto=newInteger(0)通过Integer类的实例创建Object对象oSystem.
out.
println((String)o)将Object对象o强制转换为字符串时出错【例11.
3】在项目中创建Example_02类,在该类中创建一个数组,然后使用超出数组下标范围的值访问数组中的元素,观察发生的异常.
(实例位置:光盘\TM\sl\11\2)int[]number={100,80,50,70,20,60};//创建并初始化具有6个元素的数组publicvoidsetNum(intindex,intvalue){//根据索引值index为数组元素赋值value的方法number[index]=value;为数组中索引值index处的元素赋值value}publicintgetNum(intindex)根据索引值index获得数组中对应元素值的方法returnnumber[index]获得数组中索引值index处的元素值}publicstaticvoidmain(String[]args){Example_02ex=newExample_02(创建类的实例//调用方法获得数组中索引值0处的元素值,即第一个元素的值100intvalue=ex.
getNum(0);System.
out.
println(value)输出第一个元素的值100//索引值6超出了数组下标的范围,因此将发生异常,导致程序终止,下面的代码将不会被执行value=ex.
getNum(6);System.
out.
println(value);//获得数组中最后一个元素的值60value=ex.
getNum(5)System.
out.
println(value)输出最后一个元素值60}运行结果如图11.
3所示.
图11.
3ArrayIndexOutOfBoundsException异常11.
2.
3范例1:算术异常算术异常即ArithmeticException,是指整数被0除产生的异常.
在Java语言中,如果一个整数被0除,那么将抛出ArithmeticException,但是浮点数被0除,将不引发算术异常,这与数学中不同.
本范例将演示出现算术异常的情况,并进行处理.
运行结果如图11.
4所示.
(实例位置:光盘\TM\sl\11\3)图11.
4算术异常(1)在Eclipse中创建项目03,并在该项目中创建com.
mingrisoft包.
(2)在com.
mingrisoft包中创建类文件,名称为ExceptionTest.
在该类的主方法中,演示出现算术异常的情况.
这里将第一条可能出现异常的语句应用try…catch语句捕获,并输出异常信息,第二条可能出现异常的语句不作处理.
代码如下:publicclassExceptionTest{publicstaticvoidmain(String[]args){System.
out.
println("-1.
0/0="+(-1.
0/0)演示负浮点数除0System.
out.
println("+1.
0/0="+(+1.
0/0)演示正浮点数除0try{System.
out.
println("-1/0="+(-1/0)演示负整数除0}catch(Exceptione){System.
out.
println("抛出异常:"+e.
getMessage());}System.
out.
println("+1/0="+(+1/0)演示正整数除0System.
out.
println("输出结束.
");}}11.
2.
4范例2:数组下标越界异常数组下标越界异常即ArrayIndexOutOfBoundsException,当访问的数组元素的下标值大于数组的最大下标值时发生.
也就是数组元素的下标值大于等于数组的长度时发生.
本范例将演示出现数组下标越界异常(ArrayIndexOutOfBoundsException)的情况.
运行结果如图11.
5所示.
(实例位置:光盘\TM\sl\11\4)图11.
5数组下标越界异常(1)在Eclipse中创建项目04,并在该项目中创建com.
mingrisoft包.
(2)在com.
mingrisoft包中创建类文件,名称为ArrayExceptionTest.
在该类的main()方法中,首先声明一个长度为5的整型数组,并应用Arrays对象的fill()方法,将数组中所有元素赋值为8,然后应用for循环遍历输出所有数组元素.
代码如下:publicclassArrayExceptionTest{publicstaticvoidmain(String[]args){int[]array=newint[5]声明一个长度为5的整型数组Arrays.
fill(array,8)将新声明数组的所有元素赋值为8for(inti=0;iclazz=Class.
forName(得到一个空的Class对象System.
out.
println("离开try语句块");}catch(ClassNotFoundExceptione)定义catch语句块System.
out.
println("进入catch语句块");e.
printStackTrace();System.
out.
println("离开catch语句块");}finally定义finally语句块System.
out.
println("进入finally语句块");}}}11.
8.
2经典范例2:数据库操作异常视频讲解:光盘\TM\lx\11\数据库操作异常.
exe数据库操作异常即SQLException,通常发生在出现数据库访问错误时.
本范例将演示出现数据库操作异常的情况.
运行结果如图11.
15所示.
(实例位置:光盘\TM\sl\11\14)图11.
15数据库操作异常(1)在Eclipse中创建项目15,并在该项目中创建com.
mingrisoft包.
(2)在com.
mingrisoft包中编写ExceptionTest类,在该类的main()方法中,编写数据库连接的代码,并且捕获可能抛出的异常.
代码如下:publicclassExceptionTest{publicstaticvoidmain(String[]args){StringURL="jdbc:mysql://localhost:3306/db_database";//MySQL数据库的URLStringDRIVER="com.
mysql.
jdbc.
Driver"MySQL数据库的驱动StringUSERNAME="mr"数据库的用户名Connectionconnection=null;try{Class.
forName(DRIVER)加载驱动//建立连接connection=DriverManager.
getConnection(URL,USERNAME,"");}catch(SQLExceptione)捕获SQLExceptione.
printStackTrace();}catch(ClassNotFoundExceptione)捕获ClassNotFoundExceptione.
printStackTrace();}finally{try{connection.
close(释放资源}catch(SQLExceptione){e.
printStackTrace();}}}}11.
9本章小结本章向读者介绍的是Java中的异常处理机制.
通过本章的学习,读者应了解异常的概念、几种常见的异常类,掌握异常处理技术,以及如何创建、激活用户自定义的异常处理器.
Java中的异常处理是通过try…catch语句来实现的,也可以使用throws语句向上抛出.
建议读者不要将异常抛出,应该编写异常处理语句.
对于异常处理的使用原则,读者也应该理解.

RackNerd:便宜vps补货/1核/768M内存/12G SSD/2T流量/1G带宽,可选机房圣何塞/芝加哥/达拉斯/亚特拉大/荷兰/$9.49/年

RackNerd今天补货了3款便宜vps,最便宜的仅$9.49/年, 硬盘是SSD RAID-10 Storage,共享G口带宽,最低配给的流量也有2T,注意,这3款补货的便宜vps是intel平台。官方网站便宜VPS套餐机型均为KVM虚拟,SolusVM Control Panel ,硬盘是SSD RAID-10 Storage,共享G口带宽,大流量。CPU:1核心内存:768 MB硬盘:12 ...

零途云:香港站群云服务器16IP220元/月,云服务器低至39元/月

零途云(Lingtuyun.com)新上了香港站群云服务器 – CN2精品线路,香港多ip站群云服务器16IP/5M带宽,4H4G仅220元/月,还有美国200g高防云服务器低至39元/月起。零途云是一家香港公司,主要产品香港cn2 gia线路、美国Cera线路云主机,美国CERA高防服务器,日本CN2直连服务器;同时提供香港多ip站群云服务器。即日起,购买香港/美国/日本云服务器享受9折优惠,新...

CloudCone:KVM月付1.99美元起,洛杉矶机房,支持PayPal/支付宝

CloudCone的[2021 Flash Sale]活动仍在继续,针对独立服务器、VPS或者Hosted email,其中VPS主机基于KVM架构,最低每月1.99美元,支持7天退款到账户,可使用PayPal或者支付宝付款,先充值后下单的方式。这是一家成立于2017年的国外VPS主机商,提供独立服务器租用和VPS主机,其中VPS基于KVM架构,多个不同系列,也经常提供一些促销套餐,数据中心在洛杉...

该内存不能为read为你推荐
me域名注册为什么现在无法注册.me的域名了中国互联网域名注册什么叫做网络域名 怎么注册网络域名 以及它的收费方式asp主机空间asp空间是什么域名服务商如何更换域名服务商国内ip代理谁能推荐一款最快的ip代理。美国网站空间论坛选择空间可以选美国网站空间吗?虚拟主机是什么什么是虚拟主机韩国虚拟主机香港虚拟主机和韩国虚拟主机比较,哪个更好?成都虚拟主机一个虚拟主机最多支持几个子目录呢?一个百度推广账户是不是只能推广一个主域名下的网站?虚拟主机排名换一台虚拟主机会影响排名吗?
.net虚拟主机 怎样注册域名 Dedicated mediafire下载工具 流媒体服务器 正版win8.1升级win10 http500内部服务器错误 创宇云 一元域名 卡巴斯基官方免费版 如何用qq邮箱发邮件 独享主机 丽萨 湖南idc 服务器托管价格 cloudflare 日本小学生 linuxvi nano winscpiphone 更多