《java异常io.docx》由会员分享,可在线阅读,更多相关《java异常io.docx(17页珍藏版)》请在第壹文秘上搜索。
1、java异样io第卜章异样处理一、什么是异样:程序编译和运行时发生的错误称为异样。处理发生的异样称为异样处理。主要侧重于程序运行时发生的错误。异样处理的目的是保证程序的正常运行。一个异样就是一个异样类(对象)。案例一:packagecom.nkzy;importjava.util.Scanner:publicclassTestExceptionpublicstaticvoidmain(Stringargs)Scannerinput=newScanner(Systen).in);intnunl,nun2,resu111,result2;System,out.PrintIn(请输入第一个操作数:)
2、;numl=input,nextlntO;System,out.Println(请输入其次个操作数:);num2=input,nextlnt();result1=nunl/num2;System,out.println(numl/num2=+resultl);result2=nml*num2;System.out.printIn(numl*num2=+result2);当我们输入num2为。时,出现异样状况如卜丁当程序发生异样时,程序不能正常执行。异样处理:packagecom.nkzy;importjava.util.Scanner:publicClassTestExceptionpubli
3、cstaticvoidmain(Stringargs)Scannerinput=newScanner(System,in);intnuml,num2,result!,result2:System,out.PrintIn(请输入第一个操作数:);numl=input,nextlnt();System,out.PrintIn(请输入其次个操作数:);num2=input,nextIntO;tryresult1=numl/num2;System.out.pri11tln(11u11l/num2=+resultl);catch(ArithmeticExceptione)System,out.Print
4、In(发生异样);System.out.println(e.getMessage();result2=numl*num2;System,out.printIn(numl*num2=+result2);运行效果如下:当发生异样时,程序仍旧正常运行。二、异样的体系结构1、异样的类型Error类用于定义不希望程序能从其复原过来的灾难性故障。所以程序员不须要捕获它们。如:线程停止、虚拟机错误等。ObjectThrowableErrorThreadDeathAWTErroeExceptionSQI.ExccptionClassNotFountExccptionRuntimeException对于从Exc
5、eption派生出来的全部其他类,是我们重点学习的内容。运行时异样可以处理,也可以不处理;编译时异样必需进行处理。三、异样处理1、try/catch及try/catch/finallytry块:可能发生异样的代码。CatCh块:处理异样的代码,一个try后面可以跟多个CatCh,但是大类别的的异样必需在小类别异样的后面,同级别的没有依次。finalIy块:与try块一起运用,无论是否出现,finally块都将运行。案例:packagecom.nkzy:importjava.util.Scanner:publicclassTestExceptionpublicstaticvoidmain(Str
6、ingargs)ExceptionSQ1.ExceptionClassNotFoundExceptionRuntiineException编译时异样NUIIPOintEXCePIiOnNumberFormatExceptionTry块finallyfinallyCatch块没有异样异样intnuml,num2,result1,result2;numl10:num2=0;System,out.printIn(try块前代码);tryresult1=numl/num2;System.out.println(resultl);catch(Nu11PoiFiterExceptione)System.o
7、ut.Println(发生空指针异样);System,out.printIn(e.getMessageO);catch(ArithmeticExceptione)System.out.PrinIIn(发生数学异样);System,out.println(e.getMessage():catch(RuntimeExceptione)System.out.PrintJn(发生运行时异样):System,out.println(e.getMessage():finallySystem.out.PrintJn(打扫战场);System,out.printin(try-catch-finalIy块后代码
8、):运行效果:2、异样抛出案例:packagecom.nkzy;pub)icclassTeacherpublicvoidshangke()throwsException!trycatch(Exceptione)System.out.PrintIn(老师上课);System,out.PrintIn(学生打架);System,out.Println(自己处理部分);throwe;packagecom.nkzy;publicclassHeadOfTeachingpublicvoidteaching()throwsExceptionTeachert=newTeacherO;tryt.shangkeO;
9、catch(Exceptione)System,out.Println(自己处理部分);throwe;packagecom.nkzy;publicclassMasterpublicstaticvoidmain(Stringargs)HeadOfTeachingh=newHeadOfTeaching();tryh.teaching();catch(Exceptione)System,out.PrintIn(校长必需处理,不能再抛);e.PrintStackTraceO;)(1)throw出现在方法体内,表示抛出某个异样,throws属于方法声明,在参数列表的后面,表示这个方法可能抛出的异样,假如
10、是编译时异样,调用者必需处理,并且可以声明多个异样。(2)编译时异样,调用者必需处事理分三种方法:全部处理、全部抛出、部分处理部分抛出。3、自定义异样(1)希望当一个标准异样出现时,添加一些信息,可能通过抛出你自己的异样来做到这一点。(2)代码中可以有一些出错条件,以保证区分出某种特定的异样类。(3)虽然可以从任何的标准异样派生出臼己的类,但最好的策略是从Exception派生O案例:packagecom.nkzy;pub!icclassZhaojingyuExccptionextendsException(publicZhaojiDgyuExceptionOsuperO;publicZhao
11、jingyuException(Stringmessage)super(HeadOfTeaching=+message);packagecom.nkzy;publicclassTeacherpublicvoidshangkeOthrowsZhaojIngyuExceptionif(true)thrownewZhaojingyuExccption(学生上课打架!);packagecom.nkzy:publicclassHeadOfTeachingpublicvoidteaching()throwsZhaojingyuExccptionTeachert=newTeacherO;t.shangkeO
12、:packagecom.nkzy:PublicclassMasterpublicstaticvoidmain(Stringargs)HeadOfTeachingh=newHeadOfTeachingO;tryh.teaching();catch(ZhaojiHgyuExceptione)/TODOuto-generatedcatchblocke.PrintStackTraceO:第十二章节TO流*、Java流式输入/输出原理在Java程序中,对于数据的输入/输出操作以流(stream)方式进行,JDK供应了各种各样的流类,用以获得不同种类的数据;程序中通过标准的方法输入或输出数据。程序文件Oo
13、lOl程序文件OolOI程序Oolol网络连接程序O(HOl程序001程序文件hell。二、输入/输出流的分类1、java,i。包中定义了多个流类型(类或抽象类)来实现输入/输出功能:可以从不同的角度对其进行分类:(1)按数据流的方向不同可以分为输入流和输出流;(2)按处理数据单位不同可以分为字节流和字符流;(3)根据功能不同可以分节点流和处理流。2、JDK所供应的全部流类型位于包java,io内都分别继承自以下四种抽象流类型。字节流输入流InputStream输出流OUtPUtStrealn3、节点流和处理流(1)节点流为可以从一个特定的数据源(节点)读写数据(如:文件,内存)。字符流Rea
14、derWriter(2)处理流是连接在已存在的流(节点流或处理流)之上,通过对数据的处理为程序供应更为强大的读写功能。三、InputStream1、InputStream:继承自InputStream的流都是用于向程序中输入数据,且数据的单位为字节(8bit);下图中深色为节点流,浅色为处理流。数据源程序数据源程序数据源程序节点流2、InputStrcam的基本方法(1)intread()throwsIOException读取一个字节并以整数的形式返回(0-255),假如返回T已到输入流的末尾。(2)intread(bytebuffer)throwsIOException读取一系列字节并存储到
15、一个数组buffer,返回实际读取的字节数,假如读取前已到输入流的末尾返回T.(3)intread(bytebuffer,intoffset,intlength)throwsIOExccption读取length个字节,并存储到一个字节数组buffer,从OffSet位置起先,返回实际读取的字节数,假如读取前已到输入流的末尾返回-1.(4)VoidcloseOthrowsIOException关闭流释放内存资源(5)longskip(longn)throwsIOException跳过n个字节不读,返回实际跳过的字节数。四、OutputStrcain1、OutputStream:继承臼OutputStream的流是用于程序中输入数据,且数据的单位为字节(8bit);下图中深色为节点流,浅色为处理流。2、OutputStream的基本方法(1)voidwrite(intb)throwsIOException(2)voidwrite(byteb)throwsIOException(3)voidwrite(byteb,intoff,intIen)throwsIOException(4)vo