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

易探云(QQ音乐绿钻)北京/深圳云服务器8核8G10M带宽低至1332.07元/年起

易探云怎么样?易探云香港云服务器比较有优势,他家香港BGP+CN2口碑不错,速度也很稳定。尤其是今年他们动作很大,推出的香港云服务器有4个可用区价格低至18元起,试用过一个月的用户基本会续费,如果年付的话还可以享受8.5折或秒杀价格。今天,云服务器网(yuntue.com)小编推荐一下易探云国内云服务器优惠活动,北京和深圳这二个机房的云服务器2核2G5M带宽低至330.66元/年,还有高配云服务器...

ShockHosting($4.99/月),东京机房 可享受五折优惠,下单赠送10美金

ShockHosting商家在前面文章中有介绍过几次。ShockHosting商家成立于2013年的美国主机商,目前主要提供虚拟主机、VPS主机、独立服务器和域名注册等综合IDC业务,现有美国洛杉矶、新泽西、芝加哥、达拉斯、荷兰阿姆斯特丹、英国和澳大利亚悉尼七大数据中心。这次有新增日本东京机房。而且同时有推出5折优惠促销,而且即刻使用支付宝下单的话还可获赠10美金的账户信用额度,折扣相比之前的常规...

欧路云(22元) 新增美国Cera线路VPS主机且可全场8折

欧路云(oulucloud) 商家在前面的文章中也有陆续介绍过几次,这不今天有看到商家新增加美国Cera线路的VPS主机,而且有提供全场八折优惠。按照最低套餐最低配置的折扣,月付VPS主机低至22元,还是比较便宜的。不过我们需要注意的是,欧路云是一家2021年新成立的国人主机商,据说是由深圳和香港的几名大佬创建。如果我们有介意新商家的话,选择的时候谨慎且月付即可,注意数据备份。商家目前主营高防VP...

该内存不能为read为你推荐
免费注册域名有没有能够免费申请的域名??免费虚拟空间免费的虚拟主机空间哪个好?虚拟主机代理谁给推荐个好的虚拟主机无限级代理com域名空间我想注册个.com域名和买一个100M空间。asp主机空间有ASP虚拟主机空间,还需要另外买Access数据库么?免费虚拟主机申请免费域名和免费虚拟主机申请以及绑定求详解网站域名域名和网址有什么区别?台湾主机电脑主板那些牌子是台湾的?那些牌子是国产的?美国网站空间美国,韩国,香港网站空间虚拟主机测评虚拟主机怎么看好坏!!!!
双线虚拟主机 免费域名申请 什么是二级域名 中文域名交易中心 3322动态域名 荷兰服务器 locvps 博客主机 大容量存储 500m空间 网通ip 大容量存储器 域名评估 服务器合租 空间登陆首页 丽萨 秒杀品 酸酸乳 godaddy空间 宿迁服务器 更多