数组该内存不能为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语句向上抛出.
建议读者不要将异常抛出,应该编写异常处理语句.
对于异常处理的使用原则,读者也应该理解.

bluehost32元/月,2核2G/20GB空间,独立ip,新一代VPS美国云主机!

bluehost怎么样?bluehost推出新一代VPS美国云主机!前几天,BlueHost也推出了对应的周年庆活动,全场海外虚拟主机月付2.95美元起,年付送免费的域名和SSL证书,通过活动进入BlueHost中文官网,购买虚拟主机、云虚拟主机和独立服务器参与限时促销。今天,云服务器网(yuntue.com)小编给大家介绍的是新一代VPS美国云主机,美国SSD云主机,2核2G/20GB空间,独立...

QQ防红跳转短网址生成网站源码(91she完整源码)

使用此源码可以生成QQ自动跳转到浏览器的短链接,无视QQ报毒,任意网址均可生成。新版特色:全新界面,网站背景图采用Bing随机壁纸支持生成多种短链接兼容电脑和手机页面生成网址记录功能,域名黑名单功能网站后台可管理数据安装说明:由于此版本增加了记录和黑名单功能,所以用到了数据库。安装方法为修改config.php里面的数据库信息,导入install.sql到数据库。...

PIGYUN:美国联通CUVIPCUVIP限时cuvip、AS9929、GIA/韩国CN2机房限时六折

pigyun怎么样?PIGYunData成立于2019年,2021是PIGYun为用户提供稳定服务的第三年,目前商家提供香港CN2线路、韩国cn2线路、美西CUVIP-9929、GIA等线路优质VPS,基于KVM虚拟架构,商家采用魔方云平台,所有的配置都可以弹性选择,目前商家推出了七月优惠,韩国和美国所有线路都有相应的促销,六折至八折,性价比不错。点击进入:PIGYun官方网站地址PIGYUN优惠...

该内存不能为read为你推荐
虚拟空间什么是网络虚拟空间?租用主机哪个平台可以租电脑国外虚拟空间哪里买的100m海外虚拟空间便宜稳定?虚拟主机评测浅谈建站新手如何挑选虚拟主机论坛虚拟主机最适合做论坛的虚拟主机是什么?双线虚拟主机G型双线虚拟主机是什么意思二级域名什么是二级域名域名邮箱邮箱域名是什么万网域名万网的域名好不好?万网域名的优缺点.万网域名万网的一个域名是怎么开通的?
广州服务器租用 荷兰服务器 腾讯云数据库 天猫双十一秒杀 好看的桌面背景大图 北京主机 web服务器的架设 129邮箱 酷番云 空间首页登陆 河南移动梦网 电信网络测速器 服务器防火墙 博客域名 zcloud 美国vpn代理 webmin 美国达拉斯 电脑显示屏不亮但是主机已开机 电脑主机启动不了 更多