JAVA网页编程之Flow control and exception Handling
专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。2)FlowcontrolandexceptionHandlingObjective1)
Writecodeusingifandswitchstatementsandidentifylegalargumenttypesforthesestatements.
・Unreachablestatementsproduceacompile-timeerror.
while(false){x=3;}//won’tcompile
for(;false;){x=3;}//won’tcompile
if(false){x=3;}//willcompile,toprovidetheabilitytoconditionallycompilethecode.
while(1==2){…}//fine
・Alocalvariableinablockmaybere-declaredinanotherlocalblock,iftheblocksaredisjoint.
・iftakesabooleanarguments.Parenthesisrequired.elsepartisoptional.elseifstructureprovidesmultipleselectivebranching.
・switchtakesanargumentofbyte,short,charorint.(assignmentcompatibletoint)
・casevalueshouldbeaconstantexpressionthatcanbeevaluatedatcompiletime.
・Compilercheckseachcasevalueagainsttherangeoftheswitchexpression’sdatatype.Thefollowingcodewon’tcompile.
byteb;
switch(b){
case200://200notinrangeofbyte
default:
}
・Weneedtoplaceabreakstatementineachcaseblocktopreventtheexecutiontofallthroughothercaseblocks.Butthisisnotapartofswitchstatementandnotenforcedbythecompiler.
・defaultcasecanbeplacedanywhere.It’llbeexecutedonlyifnoneofthecasevaluesmatch.
・switchcanbenested.Nestedcaselabelsareindependent,don’tclashwithoutercaselabels.
・Emptyswitchconstructisavalidconstruct.Butanystatementwithintheswitchblockshouldcomeunderacaselabelorthedefaultcaselabel.
Objective2)
Writecodeusingallformsofloopsincludinglabeledandunlabeleduseofbreakandcontinueandstatethevaluestakenbyloopcountervariablesduringandafterloopexecution.
・3constructsCfor,while,do
・Allloopsarecontrolledbyabooleanexpression.
・Inwhileandfor,thetestoccursatthetop.Indo,testoccursatthebottom,sothebodyisexecutedatleastonce.
・Infor,wecandeclaremultiplevariablesinthefirstpartoftheloopseparatedbycommas,alsowecanhavemultiplestatementsinthethirdpartseparatedbycommas.
・Inthefirstsectionofforstatement,wecanhavealistofdeclarationstatementsoralistofexpressionstatements,butnotboth.Wecannotmixthem.
・Allexpressionsinthethirdsectionofforstatementwillalwaysexecute,evenifthefirstexpressionmakestheloopconditionfalse.ThereisnoshortCcircuithere.
・breakstatementcanbeusedwithanykindoflooporaswitchstatementorjustalabeledblock.
・continuestatementcanbeusedwithonlyaloop(anykindofloop).
・Loopscanhavelabels.Thebreakstatementabandonsprocessingofthecurrentloopentirely,thecontinuestatementonlyabandonsthecurrentlyprocessingtimearoundtheloop.
・Namesofthelabelsfollowthesamerulesasthenameofthevariables.(Identifiers)
・Labelscanhavethesamename,aslongastheydon’tencloseoneanother.
・Thereisnorestrictionagainstusingthesameidentifierasalabelandasthenameofapackage,class,interface,method,field,parameter,orlocalvariable.
・Infact,labelsmaybeappliedtoanystatements,buttheyareonlyusefulinthecontextofbeakandcontinueinloopconstructions.
Objective3)
Writecodethatmakesproperuseofexceptionsandexceptionhandlingclauses(trycatchfinally)anddeclaresmethodsandoverridingmethodsthatthrowexceptions.
・Inanymethodorconstructor(notclass)thatcontainslinesthatmightthrowacheckedexception,youmusteitherhandletheexceptionusingatry/catchconstruct,ordeclarethatthemethodthrowstheexception.Donotneedboth,butcompilerwouldn’tcompainthat.
・Java.lang.RuntimeExceptionandjava.lang.Errorneednotbehandledordeclared.
・UsethrownewxxxException()tothrowanexceptionexplicitly.Ifthethrownobjectisnull,aNullPointerExceptionwillbethrownatthehandler.
・IfamethodA()isdeclaredasthrowinganExceptionbythethrowsclause,whenyoucallA()inmethodB(),methodB()hastoeitherthrowsexceptionorcatchtheexceptionbyA().
・Anexceptioncausesajumptotheendoftryblock.Iftheexceptionoccurredinamethodcalledfromatryblock,thecalledmethodisabandoned.
・Ifthere’sacatchblockfortheoccurredexceptionoraparentclassoftheexception,theexceptionisnowconsideredhandled.
・Thetry/catchclausemusttraperrorsintheordertheirnaturalorderofhierarchy.
・Atleastone‘catch’blockorone‘finally’blockmustaccompanya‘try’statement.Ifall3blocksarepresent,theorderisimportant.(try/catch/finally)
・finallyandcatchcancomeonlywithtry,theycannotappearontheirown.
・Regardlessofwhetherornotanexceptionoccurredorwhetherornotitwashandled,ifthereisafinallyblock,it’llbeexecutedalways.(Evenifthereisareturnstatementintryblock).
・System.exit()anderrorconditionsaretheonlyexceptionswherefinallyblockisnotexecuted.
・Iftherewasnoexceptionortheexceptionwashandled,executioncontinuesatthestatementafterthetry/catch/finallyblocks.
・Iftheexceptionisnothandled,theprocessrepeatslookingfornextenclosingtryblockupthecallhierarchy.Ifthissearchreachesthetoplevelofthehierarchy(thepointatwhichthethreadwascreated),thenthethreadiskilledandmessagestacktraceisdumpedtoSystem.err.
・Ifanexceptionhandlerre-throwsanexception(throwinacatchblock),samerulesapply.Eitheryouneedtohaveatry/catchwithinthecatchorspecifytheentiremethodasthrowingtheexceptionthat’sbeingre-throwninthecatchblock.CatchblocksatthesamelevelwillnothandletheexceptionsthrowninacatchblockCitneedsitsownhandlers.
・Ifthere’snocodeintryblockthatmaythrowexceptionsspecifiedinthecatchblocks,compilerwillproduceanerror.(Thisisnotthecaseforsuper-classException)
・Inotherwords,anoverridingmethodmaynotthrowcheckedexceptionsthatarenotthrownbytheoverriddenmethod.AmethodcanreturnanException(?)
Hereistheexceptionhierarchy.
Object
|
|
Throwable
||
||
||
|Error
|
|
Exception-->ClassNotFoundException,
ClassNotSupportedException,
IllegalAccessException,
InstantiationException,
InterruptedException,
NoSuchMethodException,
RuntimeException,-----àEmptyStackException,
AWTException,NoSuchElementException,
IOExceptionArithmeticException,
ArrayStoreException,
ClassCastException,
IllegalArgumentException,---àIllegalThreadStateException
IllegalMonitorStateException,NumberFormatException
IndexOutOfBoundsException,
NegativeArraySizeException,
NullPointerException,
SecurityException.
IndexOutOfBoundsException-->ArrayIndexOutOfBoundsException,StringIndexOutOfBoundsException
IOException-->EOFException,
FileNotFoundException,
InterruptedIOException,
UTFDataFormatException,
MalformedURLException,
ProtocolException,
SockException,
UnknownHostException,
UnknownServiceException.
你总不能说你写框架吧,那无疑会加大工作量,现在大多企业采取的是折中的办法,就是改别人写好的框架,可要改框架,前提是你对这个框架足够的了解,这就更难了。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 是一种使网页(Web Page)产生生动活泼画面的语言 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
页:
[1]