透明 发表于 2015-1-18 11:55:33

JAVA网页编程之Flow control and exception Handling

专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。2)FlowcontrolandexceptionHandling
Objective1)
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.



你总不能说你写框架吧,那无疑会加大工作量,现在大多企业采取的是折中的办法,就是改别人写好的框架,可要改框架,前提是你对这个框架足够的了解,这就更难了。

再见西城 发表于 2015-1-21 17:04:09

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

谁可相欹 发表于 2015-1-24 05:58:36

是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能

海妖 发表于 2015-1-24 20:35:19

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

爱飞 发表于 2015-2-2 13:03:16

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

小女巫 发表于 2015-2-7 20:16:12

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

飘飘悠悠 发表于 2015-2-23 09:51:11

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

再现理想 发表于 2015-3-7 00:28:37

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

山那边是海 发表于 2015-3-8 18:42:12

是一种使网页(Web Page)产生生动活泼画面的语言

admin 发表于 2015-3-16 04:55:40

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。

透明 发表于 2015-3-16 06:33:33

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)

简单生活 发表于 2015-3-17 00:10:23

J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。

柔情似水 发表于 2015-3-20 10:28:10

你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?

小妖女 发表于 2015-4-1 21:10:14

是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言

老尸 发表于 2015-4-6 20:11:07

是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能

蒙在股里 发表于 2015-4-10 03:31:11

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。

金色的骷髅 发表于 2015-4-16 00:10:22

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

仓酷云 发表于 2015-4-21 23:12:43

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

只想知道 发表于 2015-5-1 02:10:17

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

莫相离 发表于 2015-6-10 15:40:46

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
页: [1]
查看完整版本: JAVA网页编程之Flow control and exception Handling