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

萤光云(20元/月),香港CN2国庆特惠

可以看到这次国庆萤光云搞了一个不错的折扣,香港CN2产品6.5折促销,还送50的国庆红包。萤光云是2002年创立的商家,本次国庆活动主推的是香港CN2优化的机器,其另外还有国内BGP和高防服务器。本次活动力度较大,CN2优化套餐低至20/月(需买三个月,用上折扣+代金券组合),有需求的可以看看。官方网站:https://www.lightnode.cn/地区CPU内存SSDIP带宽/流量价格备注购...

华纳云E5处理器16G内存100Mbps688元/月

近日华纳云商家正式上线了美国服务器产品,这次美国机房上线的产品包括美国云服务器、美国独立服务器、美国高防御服务器以及美国高防云服务器等产品,新产品上线华纳云推出了史上优惠力度最高的特价优惠活动,美国云服务器低至3折,1核心1G内存5Mbps带宽低至24元/月,20G ddos高防御服务器低至688元/月,年付周期再送2个月、两年送4个月、三年送6个月,终身续费同价,有需要的朋友可以关注一下。华纳云...

弘速云20.8元/月 ,香港云服务器 2核 1g 10M

弘速云元旦活动本公司所销售的弹性云服务器、虚拟专用服务器(VPS)、虚拟主机等涉及网站接入服务的云产品由具备相关资质的第三方合作服务商提供官方网站:https://www.hosuyun.com公司名:弘速科技有限公司香港沙田直营机房采用CTGNET高速回国线路弹性款8折起优惠码:hosu1-1 测试ip:69.165.77.50​地区CPU内存硬盘带宽价格购买地址香港沙田2-8核1-16G20-...

该内存不能为read为你推荐
主机空间网站空间、主机是什么?他们有什么联系??php虚拟主机如何选择PHP网站虚拟主机linux虚拟主机windows虚拟主机和linux虚拟主机有什么区别全能虚拟主机那家虚拟主机服务商比较不错,比较有名?免费国外空间那个国外空间好啊啊 价格便宜 急需国内ip代理求一些国内《ip代理》地址大全域名购买在网上购买域名 会受骗吗香港虚拟空间请大哥帮个忙,介绍可靠的香港虚拟主机?asp虚拟空间ASP空间是什么意思?淘宝虚拟主机淘宝买万网虚拟主机怎么变别真假
org域名 中文域名交易中心 新加坡主机 burstnet 狗爹 vpsio iisphpmysql mobaxterm java虚拟主机 腾讯云分析 最好的免费空间 129邮箱 metalink cloudlink 电信网络测速器 主机返佣 网页加速 免费网络空间 网站加速 asp空间 更多