翻译文献-异常处理_第1页
翻译文献-异常处理_第2页
翻译文献-异常处理_第3页
翻译文献-异常处理_第4页
翻译文献-异常处理_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

外文原文INTRODUCTIONBADTHINGSCANHAPPENTOARUNNINGAPPLICATIONITCANRUNINTOANERRORCONDITIONCAUSEDBYINCORRECTDATAENTEREDBYTHEUSER,APROBLEMINACCESSINGARESOURCE,ORABUGINTHEAPPLICATIONCODE,FOREXAMPLEJAVAHASACOMPREHENSIVEERRORTRAPPINGANDHANDLINGMECHANISMCALLEDEXCEPTIONHANDLINGEXCEPTIONSARETHEMESSENGERSTHATCARRYTHEBADNEWSINSIDETHEWORLDOFAPPLICATIONS,FROMMETHODTOMETHOD,BEANTOBEAN,BEANTOCONTAINER,ANDCONTAINERTOCLIENTTHEREAREEXCEPTIONSTHATYOUEXPECT,SOYOUPREPAREYOURCODEFORTHEIRARRIVALUNDESIREDBUTEXPECTEDGUESTSTHESEARECALLEDCHECKEDEXCEPTIONSBECAUSETHECOMPILERCHECKSWHETHERYOURCODEISPREPARETODEALWITHTHEMTHECOUNTERPARTOFCHECKEDEXCEPTIONSISUNCHECKEDEXCEPTIONS,WHICHTHECOMPILERDOESNOTCHECKTHESEARETHEUNEXPECTEDMESSENGERSTHATCATCHYOUUNPREPAREDINEJB,EXCEPTIONSARECLASSIFIEDASAPPLICATIONEXCEPTIONSANDSYSTEMEXCEPTIONSALLAPPLICATIONEXCEPTIONSARECHECKEDEXCEPTIONS,ANDMOSTSYSTEMEXCEPTIONSAREUNCHECKEDEXCEPTIONSWEWILLEXPLOREHOWBADNEWSTRAVELSFROMTHEBEANTOTHECONTAINERANDFROMTHECONTAINERTOTHECLIENTSOMETIMESTHENEWSCANBESOBADTHATAFTERHEARINGITTHECONTAINERWILLKILLTHEMESSENGERANDROLLBACKTHETRANSACTIONINWHICHTHENEWSWASGENERATEDYOUWITNESSEDTHISINTHELASTCHAPTERINOTHERSITUATIONS,THECONTAINERWILLLAZILYYIELDTOTHEEXCEPTIONANDLETITGOTOTHECLIENTINITSORIGINALFORMINYETANOTHERSITUATION,ITWILLREDRESSTHEEXCEPTIONBEFORESENDINGITTOTHECLIENTWEWILLEXPLOREPRECISELYWHENANDHOWTHESEEVENTSHAPPENANDTOWHOMYOURGOALINTHISCHAPTERISTOUNDERSTANDTHESTANDARDAPPLICATIONANDSYSTEMEXCEPTIONSINEHBANDHOWTHEYTRAVELALLTHEWAYFROMTHEBEANTOTHECLIENTTOACCOMPLISHTHATWEWILLEXPLORETHREEAVENUESAPPLICATIONEXCEPTIONS,SYSTEMEXCEPTIONS,ANDTHEROLESTHEBEANPROVIDERANDTHECONTAINERPLAYEXCEPTIONSINJAVAANEXCEPTIONISANERRORTHATHAPPENSWHENANAPPLICATIONISRUNNINGJAVAOFFERSACOMPREHENSIVEANDFLEXIBLESYSTEMFOREXCEPTIONHANDINGTHEMAINBENEFITOFSUCHASYSTEMISTHATITLARGELYAUTOMATESTHEPROCESSOFERRORHANDING,WHICHOTHERWISEWOULDNEEDTOBECODEDINTOEACHAPPLICATIONWHATAWASTEOFRESOURCESTHATWOULDBEALLEXCEPTIONSAREREPRESENTEDBYCLASSESORGANIZEDINTOAHIERARCHYTREELETSTAKEALOOKATPARTOFTHATTREETHEEXCEPTIONSTREEINJAVAINJAVA,EXCEPTIONSAREREPRESENTEDBYCLASSESORGANIZEDINTOAHIERARCHYTREEAPARTOFTHISTREEISSHOWNINFIGURE131THETHROWABLECLASS,WHICHFORMSTHEROOTOFTHEEXCEPTIONSTREE,ISTHEBASECLASSOFALLEXCEPTIONSINJAVATHETWOSUBCLASSESDIRECTLYDERIVEDFROMTHROWABLEAREERRORANDEXCEPTIONERRORSOCCURINTHEJAVAVIRTUALMACHINEJVMANDNOTINTHEAPPLICATIONITSELFERRORSGENERALLYREPRESENTUNUSUALPROBLEMSFROMWHICHITISDIFFICULTTORECOVEREXCEPTIONSINJAVATHESEPROBLEMSUSUALLYORIGINATEFROMTHEEXECUTIONENVIRONMENTOFTHEAPPLICATION,FOREXAMPLE,RUNNINGOUTOFMEMORYBECAUSEITISIMPOSSIBLETORECOVERFROMERRORSDURINGRUNTIME,PROGRAMMERSARENOTREQUIREDTOHANDLETHEMEXCEPTIONSGENERALLYORIGINATEFROMWITHINTHEAPPLICATIONTHEMAYALSOBERELATEDTOTHEWAYTHEPROGRAMINTERACTSWITHTHEENVIRONMENT,FOREXAMPLE,REFERRINGTOANONEXISTENTREMOTEMACHINEINGENERAL,EXCEPTIONSSHOULDBEHANDLEDINTHEPROGRAMSOMEEXAMPLESOFEXCEPTIONSAREDIVISIONBYZERO,OUTOFBOUNDARYARRAYS,ANDFILEINPUT/OUTPUTPROBLEMSTHEEXCEPTIONCLASSHASAMULTITUDEOFSUBCLASSESTHATCANBEGROUPEDINTOTWOCATEGORIES,ASYOULLSEEINTHENEXTSECTIONCHECKEDEXCEPTIONSANDRUNTIMEEXCEPTIONSEXCEPTIONSINJAVAARECLASSIFIEDINTOTWOCATEGORIESCHECKEDEXCEPTIONSANDRUNTIMEEXCEPTIONSCHECKEDEXCEPTIONSTHECOMPILERCHECKSTOENSURETHATYOURCODEISPREPAREDFORTHESEEXCEPTIONS,HENCETHENAMECHECKEDEXCEPTIONSPREPAREFORUNWELCOMEBUTEXPECTEDGUESTSTHESEEXCEPTIONSAREINSTANCESOFTHEEXCEPTIONCLASSORONEOFITSSUBCLASSES,EXCLUDINGTHERUNTIMEEXCEPTIONBRANCHCHECKEDEXCEPTIONSAREGENERALLYRELATEDTOHOWTHEPROGRAMINTERACTSWITHITSENVIRONMENT,FOREXAMPLE,URISYNTAXEXCEPTIONANDCLASSNOTFOUNDEXCEPTIONTHECONDITIONSTHATGENERATEEXCEPTIONSAREGENERALLYOUTSIDETHECONTROLOFYOURPROGRAM,ANDHENCETHEYCANOCCURINACORRECTPROGRAMYOUCANANTICIPATEEXPECTTHEM,SOYOUMUSTWRITECODETODEALWITHTHEMTHERULEISWHENACHECKEDEXCEPTIONISEXPECTED,EITHERDECLAREITINTHETHROWSCLAUSEOFYOURMETHODORCATCHITINTHEBODYOFYOURMETHOD,ORBOTHINOTHERWORDS,YOUCANTHROWITWITHOUTCATCHINGIT,YOUCANCATCHITANDRECOVERFROMIT,ORYOUCANCATCHITANDTHROWITAGAINRUNTIMEEXCEPTIONEXCEPTIONSOFTYPERUNTIMEEXCEPTIONGENERALLYOCCURBECAUSEOFPROGRAMBUGSTHEPROGRAMMERISNOTREQUIREDTOPROVIDECODEFORTHESEEXCEPTIONSBECAUSEIFTHEPROGRAMMINGWEREDONECORRECTLY,THESEEXCEPTIONSWOULDNTOCCURSINCETHEREASONFORARUNTIMEEXCEPTIONOCCURRINGISINCORRECTCODE,CATCHINGTHEEXCEPTIONATRUNTIMEISNOTGOINGTOHELPBESIDES,ITISBETTERTOWRITECORRECTCODETOPREVENTRUNTIMEEXCEPTIONSTHANTOWRITECODETOCATCHTHEMBECAUSETHECOMPILERDOESNOTCHECKTHESEEXCEPTIONS,THEYAREALSOCALLEDUNCHECKEDEXCEPTIONSANARITHMETICEXCEPTIONISANEXAMPLEOFARUNTIMEEXCEPTIONAGAIN,YOUDONOTNEEDTODECLAREORCATCHTHESEEXCEPTIONSAFTERTAKINGTHISVERYHIGHLEVELLOOKATEXCEPTIONSINJAVA20STANDARDEDITIONJ2SE,ITSTIMETOEXPLOREEXCEPTIONSINEJBEXCEPTIONSINEJBTHECOMPLEXITYOFDISTRIBUTEDANDTRANSACTIONALAPPLICATIONSINCREASETHEPROBABILITYOFERRORANDTHEAMOUNTOFEFFORTNEEDEDTODEALWITHITINOTHERWORDS,THETRANSACTIONALANDDISTRIBUTEDNATUREOFTHEEJBARCHITECTUREMAKESSUPPORTFOREXCEPTIONHANDINGINEJBTHATMUCHMORESIGNIFICANTNOTALLEXCEPTIONSINEJBARETREATEDEQUALLYBASEDONHOWTHECONTAINERTREATSEXCEPTIONS,THEEXCEPTIONSINEJBAREGROUPEDINTOTWOCATEGORIESAPPLICATIONEXCEPTIONSANDSYSTEMEXCEPTIONSAREUNCHECKEDEXCEPTIONSNOTEALLAPPLICATIONEXCEPTIONSARECHECKEDEXCEPTIONSTHEREFORE,WHENYOUCALANOTHERMETHODINYOURMETHODTHATCANTHROWANAPPLICATIONEXCEPTION,YOUMUSTEITHERDECLAREITINTHETHROWSCLAUSEOFTHECALLINGMETHODORCATCHITINTHEBODYOFTHECALLINGMETHODORBOTHINTHISSECTION,WEEXPLORETHESTANDARDAPPLICATIONEXCEPTIONSANDSYSTEMSEXCEPTIONSINEJBSTANDARDEJBAPPLICATIONEXCEPTIONSYOUSAWINTHEPREVIOUSSECTIONTHATTHEROOTOFTHEEXCEPTIONSHIERARCHYTREEISTHECLASSTHROWABLE,WHICHHASTWODIRECTSUBCLASSESERRORANDEXCEPTIONANYEXCEPTIONTHATISASUBCLASSOFEXCEPTION,BUTNOTASUBCLASSOFRUNTIMEEXCEPTIONANDNOTASUBCLASSOFREMOTEEXCEPTION,ISANAPPLICATIONEXCEPTIONANAPPLICATIONEXCEPTIONISTHROWNTOINDICATETHATTHEBUSINESSLOGICOFTHEAPPLICATIONDETECTEDAPROBLEMTHESTANDARDAPPLICATIONEXCEPTIONSINEJBARESHOWNINFIGURE132CREATEEXCEPTIONACREATEEXCEPTIONISTHROWNTOINDICATETHATANERRORHASOCCURREDDURINGTHEPROCESSOFCREATINGASESSIONBEANORENTITYBEANBOTHYOUANDTHECONTAINERCANTHROWTHISEXCEPTIONFOREXAMPLE,IFACLIENTCALLEDACREATEMETHODWITHINVALIDPARAMETERS,YOUCOULDTHROWTHISEXCEPTIONFROMTHEEJBCREATEOREJBPOSTCREATEMETHODYOUMUSTINCLUDETHISEXCEPTIONINTHETHROWSCLAUSEOFALLTHECREATEMETHODSYOUDECLAREINTHEHOMEINTERFACEOFANENTITYORSESSIONBEANYOUHAVETOINCLUDETHISEXCEPTIONINTHEEJBCREATEANDEJBPOSTCREATEMETHODSONLYIFYOUWILLPOSSIBLYTHROWITFROMTHESEMETHODSINTHECASEOFASESSIONBEAN,ACREATEEXCEPTIONCOMESFROMANEJBCREATEMETHOD,WHILEINTHECASEOFANENTITYBEAN,ITMAYCONEFROMEITHERANEJBCREATEORANDJBPOSTCREATEMETHODIFITCOMESFROMANEJBPOSTCREATEMETHOD,ITMEANSTHEBEANHASBEENCREATEDBUTHASNOTBEENINITIALIZEDYETIFITCOMESFROMTHEEJBCREATEMETHODOFASESSIONORENTITYBEAN,ITMEANSTHEBEANWASNEVERCREATEDYOUALREADYKNOWTHEDIFFERENTMEANINGSOFTHEWORDCREATEFORSCSSIONBEANSANDENTITYBEANSDUPLICATEKEYEXCEPTIONBEINGASUBCLASSOFCREATEEXCEPTION,DUPLICATEKEYEXCEPTIONISAMORESPECIFICCREATEEXCEPTIONITPOINTSTOTHEPROBLEMOFDUPLICATEKEYS,FOREXAMPLE,AREQUESTTOASSIGNAKEYENTITYTHATHASALREADYBEANASSIGNEDTOANOTHERENTITYEITHERYOUORTHECONTAINERCANTHROWTHISEXCEPTIONADUPLICATEKEYEXCEPTIONISTHROWNONLYFROMEJBCREATEMETHODS,SOYOUCANASSUMETHATTHEENTITYHASNOTYETBEENCREATEDWHENTHISEXCEPTIONISTHROWNFINDEREXCEPTIONTHECONTAINERTHROWSTHEFINDEREXCEPTIONTOINDICATETHATSOMETHINGWENTWRONGDURINGTHEOPERATIONREQUESTEDBYAFINDMETHODINVOKEDBYCLIENTYOUMUSTINCLUDETHISEXCEPTIONINTHETHROWSCLAUSEOFALLFINDMETHODSTHATYOUDECLAREINTHEENTITYBEANSHOMEINTERFACEANDALLTHEEJBFINDINTHECASEOFABEANMANAGEDPERSISTENCEBMPBEANANDEJBSELECTMETHODSTHATYOUDECLAREINTHEBEANCLASSRECALLFROMCHAPTER7THATYOUDONOTWRITEANEJBFINDMETHODINTHECLASSOFACMPBEANTHECONTAINERGENERATESTHISMETHODINSTEADOBJECTNOTFOUNDEXCEPTIONOBJECTNOTFOUNDEXCEPTION,ASUBCLASSOFFINDEREXCEPTION,ISTHROWNONLYWHENAFINDERMETHODINVOLVINGASINGLEENTITYISBEINGINVOKEDANDTHEENTITYDOESNOTEXISTTHECONTAINERISRESPONSIBLEFORTHROWINGTHISEXCEPTIONFROMTHEEJBFINDOREJBSELECTMETHODSINTHECASEOFACMPBEAN,ANDYOUTHROWITINTHECASEOFABMPBEANRECALLFROMCHAPTER6THATIFTHERETURNTYPEOFAFINDMETHODISACOLLECTION,YOUDONOTTHROWANEXCEPTIONEVENIFNOMATCHINGENTITYISFOUNDINSTEADYOURETURNANEMPTYCOLLECTIONREMOVEEXCEPTIONREMOVEEXCEPTIONISTHROWNTOINDICATEANERRORTHATHAPPENSDURINGANATTEMPTTOREMOVEASESSIONORENTITYBEANFOREXAMPLE,IFACLIENTINVOKESTHEREMOVEMETHODWITHAPRIMARYKEYASANARGUMENTINTHECASEOFASESSIONBEAN,ITWILLCAUSETHISEXCEPTIONITCANALSOOCCURDURINGANATTEMPTTODELETEANENTITYFROMADATABASEWHENITDOESNOTEXISTREMOVEEXCEPTIONDOESNOTTELLTHECLIENTCONCLUSIVELYWHETHERORNOTTHEENTITYHASBEENREMOVEDBEFORESENDINGTHEEXCEPTIONINTHECASEOFASESSIONBEAN,ONLYACLIENTOFASTATEFULSESSIONBEANCANRECEIVETHISEXCEPTIONBECAUSETHECONTAINERCREATESANDREMOVESASTATELESSSESSIONBEANWITHOUTACALLFROMACLIENTALERTACLIENTOFASTATELESSSESSIONBEANNEVERGETSAREMOVEEXCEPTIONTHISISBECAUSETHEREMOVALOFASTATELESSSESSIONBEANISDONEBYTHECONTAINERWITHOUTANYCALLFROMTHECLIENTWHENEVERYOUCALLANOTHERMETHODFROMYOURMETHODTHATMAYTHROWANAPPLICATIONEXCEPTION,YOUMUSTDOATLEASTONEOFTHEFOLLOWINGCATCHTHEEXCEPTIONINTHEBODYOFTHECALLINGMETHODANDRECOVERFROMITDECLARETHEEXCEPTIONINTHETHROWSCLAUSEOFTHECALLINGMETHODINTHISCASEIFYOUDONTCATCHITINSIDETHEMETHOD,ITWILLSIMPLYTHROWITEXACTLYINTHEFORMITRECEIVESITTHISISCALLEDDUCKINGTHEEXCEPTIONYOUCANCATCHIT,DOSOMETHINGWITHIT,ANDTHROWITTHESEARETHEJ2SERULESFORCHECKEDEXCEPTIONS,ANDAPPLICATIONEXCEPTIONSARECHECKEDEXCEPTIONSMOSTOFTHESYSTEMEXCEPTIONSINEJBAREUNCHECKEDEXCEPTIONS,BUTNOTALLLETSEXPLORESYSTEMEXCEPTIONSNEXTSTANDARDEJBSYSTEMEXCEPTIONSSYSTEMEXCEPTIONSAREINSTANCESOFRUNTIMEEXCEPTION,RENOTEEXCEPTION,ORTHEIRSUBCLASSESINOTHERWORDS,ANEXCEPTIONTHATISNOTANAPPLICATIONEXCEPTIONISASYSTEMEXCEPTIONTHESEEXCEPTIONSRESULTFROMLOWLEVELSYSTEMPROBLEMSANDAREPROBLEMSTHATACLIENTCANTANTICIPATEHOWEVER,ASYSTEMPROBLEMMAYBECAUSEDBYAPROGRAMMINGERRORAFAILURETOOBTAINADATABASECONNECTIONORANUNEXPECTEDREMOTEEXCEPTIONFROMANOTHERBEANISEXAMPLESOFTHESESYSTEMLEVELPROBLEMSNOTEALLSYSTEMEXCEPTIONSAREUNCHECKEDEXCEPTIONSEXCEPTRENOTEEXCEPTIONS,WHICHARECHECKEDEXCEPTIONTHISIMPLIESTHATTHEREMOTEINTERFACESSHOULDDECLARETHEMANDCLIENTSHOULDEXPECTTHEMTHESTANDARDSYSTEMEXCEPTIONSTHATAREUNCHECKEDEXCEPTIONSANDTHATARERECEIVEDBYLOCALCLIENTSARESHOWNINFIGURE133THESTANDARDSYSTEMEXCEPTIONSTHATSRECHECKEDEXCEPTIONSANDTHATARERECEIVEDONLYBYREMOTECLIENTSARESHOWNINFIGURE134IFAMETHODENCOUNTERSARUNTIMEEXCEPTIONRUNTIMEEXCEPTIONORANYOFITSSUBCLASSESORANERROR,ITSHOULDSIMPLYPROPAGATEITTOTHECONTAINERNOTEIFAMETHODRECEIVESANEXCEPTIONOFTYPERUNTIMEEXCEPTIONORASUBCLASSOFITORANERROR,THEMETHODSHOULDTHROWITEXACTLYASITISRECEIVEDEJBEXCEPTIONTHISEXCEPTIONCANBETHROWNFROMINSIDEABEANMETHODTOTELLTHECONTAINERTHATEXCEPTIONHASHAPPENEDFROMWHICHTHEMETHODCANNOTRECOVERIFYOURMETHODRECEIVESTHISEXCEPTION,JUSTTHROWITTOTHECONTAINERASITISRECEIVEDIFYOURMETHODENCOUNTERSACHECKEDEXCEPTIONTHATTHEMETHODCANNOTRECOVERFROM,YOUSHOULDWRAPITINTHEEJBEXCEPTIONANDTHROWITTOTHECONTAINERTHECONTAINERCANALSOTHROWTHISEXCEPTIONNOTEIFAMETHODRECEIVESACHECKEDEXCEPTIONFROMWHICHITCANNOTRECOVER,THEMETHODSHOULDWRAPITINSIDEANEJBEXCEPTIONANDTHROWITTOTHECONTAINERANOTHERSUBCLASSOFRUNTIMEEXCEPTIONISILLEGALSTATEEXCEPTIONYOUHAVAMETTHISEXCEPTIONINPREVIOUSCHAPTERSLETSTAKEANOTHERLOOKATITILLEGALSTATEEXCEPTIONTHECONTAINERTHROWSILLEGALSTATEEXCEPTIONWHENABEANMETHODINVOKESAMETHODONTHECONTEXTOFTHEBEANANDITISNOTALLOWEDTODOSORECALLTHATNOTALLTHECONTEXTMETHODSCANBECALLEDFROMALLTHEBEANMETHODSFOREXAMPLE,FROMANEJBCREATEOFANENTITYBEAN,YOUCANNOTINVOKETHEGETPRIMARYKEYCONTEXTMETHOD,BECAUSEITSTOOEARLYFORTHATANOTHEREXAMPLEWOULDBEWHENYOUCALLATRANSACTIONRELATEDMETHODSUCHASGETROLLBACKONLYORSETROLLBACKONLYINTHEABSENCEOFATRANSACTION中文翻译导言不好的情况将会在程序的运行中发生,它能运行一个由用户输入地不正确的数据,一个获取资源的问题,或者是一个在程序中代码的小漏洞。举例来说。JAVA有一个全面的误差俘获和处理机制即所谓异常处理。异常就是把坏消息带到程序内部的信使,从方法到方法,BEAN到BEAN,BEAN到容器,容器到客户。也有你所期待需要的异常,所以你要为这些异常准备好相应的代码。这些都是所谓的异常检查,是因为编译器要检查是否你的代码做好对付他们的准备。异常的副本是没有被检查的异常,编译器不会检查。这些都是让你意想不到,让你措手不及的信息。在EJB中,异常是被划分为程序异常和系统异常。所有的程序异常都是检测异常,大多数的系统异常都是非检测异常。我们将探讨坏信息如何从BEAN传输到容器,再如何从容器传输到客户端的。有时候这个信息是如此糟糕以至于容器接受后会直接销毁所有的接受到的信息然后返回传入所有新的信息。你将会在最后一章看到这些的。在其他的情况下,容器会懒得处理并屈服于异常,然后让他们直接传给客户端。在其原来的形势下,还有另一种情况,那就是在把异常传给客户端前会进行纠正。我们将探讨正是这些事件将在何时以及如何发生,并且结果传给谁了。这一章中我们的目标是,要认识到在EJB中程序异常和系统异常的差异,以及他们在程序中从BEAN到客户端的整个工作过程。为完成这一目标,我们将探讨三个渠道程序异常,系统异常,BEAN的提供者,以及容器的作用。JAVA中的异常当一个程序在运行时,一个异常就是一个错误。JAVA提供了一个全面的灵活的异常捕获系统。系统的主要优点是,它在很大程度上实现了异常捕获的自动化处理,否则我们必须在程序代码中一一标明。所有的异常的表示都是组织成层次树。让我们来看看这颗树的其中的一部分。在JAVA中,异常都是用组织成层次树来表示的,这项工作的一部分树表现在FIGURE131THROWABLE类,位于异常类树的跟部,是在JAVA中所有异常类的基类。他的两个子类直接来自THROWABLE,不存在错误和异常。错误发生在JVM中,并没有在程序本身中。错误通常代表着不同寻常的问题,并且是很难追回的。这些问题通常是起源于执行环境的应用,比如说,丢书的信息。因为在运行时回收错误是不可能的,所以程序员没有必要去处理。异常一般源于内部的应用,这个也可能与这个程序的互动环境有关,举例来说,指的是一项不存在的遥控机器。一般来说,异常应该被程序捕获。一些异常的例子被归记为零,显示文件的输入/输出问题。这个异常类有大概能分为两类的子集。在接下来的一段中你将会看到。异常和运行时异常异常在JAVA可以分为两类,编译时异常和运行时异常编译时异常编译器检查以确保你的程序为这些异常作好了准备,因为检查那些不想要的客户所以得名编译时异常。这些异常是EXCEPTION类或者它们子类中的一个,也包括RUNTIMEEXCEPTION。编译时异常一般也涉及到河环境的互动联系,比如,URISYNTAXEXCEPTIONANDCLASSNOTFOUNDEXCEPTION,产生异常的条件通常是由你说写的程序的外部环境控制的,因此,你才可以编写出可编译可运行的程序。异常是必然的,因此,你必须编写程序代码来消除他们对程序带来的影响。规则是当编译时异常必须放生的时候,又或者是已经宣布从方法里抛出异常或者在方法体中捕获到异常,再或者两种情况都发生,从另一方面来说,你可以在没有捕获异常的情况下就抛出异常,你能够捕获到他并且删除它,或者你能再一次的捕获和抛出这个异常、运行时异常因为程序的必然的漏洞,RUNTIMEEXCEPTION型的异常经常发生,程序员不必为这些异常编写额外的代码,因为如果程序是正确的可运行的,这些异常是不会发生的,发生运行时异常的原因是编写的代码的错误,在运行时捕获异常对程序是没有帮助的,另外,编写一段正确的代码来阻止异常的发生比写代码捕获异常要好的多,因为编译器不会检查这些异常,他们也被称为非编译时异常,一个逻辑异常就是一个运行时异常的具体例子,还有,你也不需要捕获这些异常。经过采取这些在JAVA20标准的异常捕获机制的执行,现在是时候在EJB中探索异常机制了。EJB中的异常传统编程的分布式应用的复杂性增加了产生错误的几率以及用来处理这些异常所增加的额外的开销。换句话说,EJB体系结构中传统分布式处理机制对异常处理提供了很好的支持,这在EJB中显得格外显著。在EJB中,不是所有的异常都是一视同仁的,这建立在容器如何产生异常的的基础上,EJB中的异常分为两类,程序应用的异常和系统本身的异常是非编译时异常。注所有的应用异常都是编译时异常。所以,当你在一个能抛出应用异常的方法中调用另一个的方法时,你必须两个方法都调用或者捕获在调用的方法的方法体重捕获异常,本节中,我们将探讨EJB中的标准的应用异常和系统异常。EJB应用异常标准在上一节中我们已经知道EXCEPTIONHIERARCHY树的根就是THROWABLE类,其中有两个直接的子类错误和异常。任何异常都是EXCEPTION类的一个子类,但不是RUNTIMEEXCEPTION和REMOTEEXCEPTION的子类,它是一个应用异常。一个编译时异常就是程序员在编写代码过程中的逻辑错误或者编写的语法错误。EJB中编译异常的标准将在图132中讲解。CREATEEXCEPTION一个CREATEEXCEPTION就是抛出一个在创建一个会话BEAN和实体BEAN过程中的异常,我们和容器都能抛出这个异常。比如,如果一个客户调用了一个带有无效参数的CREATE方法,那么你能够从EJBCREATE方法或者EJBPOSTCREATE方法中抛出这个异常。我们必须包含这个在CREATE方法中抛出的异常,在实体BEAN或者会话BEAN的接口中。我们必须包含在EJBCREATE和EJBPOSTCREATE方法的异常,这些方法可能抛出这些异常,在会话BEAN中,一个CREATEEXCEPTION来自EJBCREATE方法,如果在一个实体BEAN中,这个异常可能就来自EJBCREATE或者DJBPOSTCREATE方法中。如果它来自一个EJBPOSTCREATE方法,它就意味着这个BEAN已经被创建,但是却没有被初始化。如果它来自EJBCREATE()方法(会话BEAN或者实体BEAN),它就意味着这个BEAN从来没有被创建过。我们已经了解了创建会话BEAN和实体BEAN的不同含义。DUPLICATEKEYEXCEPTION作为一个CREATEEXCEPITON的子类,DUPLICATEKEYEXCEPTION是一个更具体的更有创造性的异常,它提出了解决分布式问题的的关键,比如说,某个请求指示了把一个关键的实体BEAN转让给另外一个实体。无论是我们还是容器都得抛出这个异常。一个DUPLICATEKEYEXCEPTION只从EJBCREATE方法中抛出异常,所以你可以假设这个异常被抛出时这个实体还没有被创建。FINDEREXCEPTION容器抛出这个FINDEREXCEPTION就说明客户在请求寻找方法的过程中出现了某些错误。我们必须包含这个在所以方法中被抛出的异常,在你声明的实体BEAN的接口中,记得在第7章中学习过,我们不能在一个CMPBEAN中写一个EJBFIND方法;由容器提供方法来代替。OBJECTNOTFOUNDEXCEPTIONOBJECTNOTFOUNDEXCEPTION是FINDEREXCEPTION的一个子类,它在只有当一个FINDER方法调用一个实体或者整个实体不存在的时候会被抛出异常

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论