|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
windows系统样,他们做了什么事或者留了一些后门程序,谁都不知道,二,java开发是跨平台,任何系统上都可以运行,对于保密型系统和大型系统开发这是必要的
Q:我在我的使用程序中挪用了内部办法而且想捕捉它大概抛出的非常。我能捕捉java.lang.Exception吗?
A:经由过程一个给定的办法去向理一切运转时和检测非常关于防备内部毛病是不充实的。
你能够往读今朝JavaWorld文章–“JavaTip134:WhenCatchingException,Don’tCastYourNetTooWide”。这篇文章告诫了捕捉java.lang.Exception和java.lang.Throable是欠好的。捕捉你能指定的非常关于代码的可保护性是非常主要的。但是这个划定规矩依附于特别的情况。假如你不盘算你的程序溃散而且保存你的数据布局的平安非常,那末你必需捕捉被抛出的真实的非常。
举个例子,设想你有一个加载了这个接口的服务器使用:
publicinterfaceIFoo
{
/**
*Thismethodcantthrowanycheckedexceptions...orcanit?
*/
voidbar();
}//Endofinterface
关于给出参数的来由是让我们关照你如许的服务在甚么中央,而且分歧的IFoo完成可以从内部资本加载上。你写以下代码:
try
{
IFoofoo=...//getanIFooimplementation
foo.bar();
}
catch(RuntimeExceptionioe)
{
//Handleioe...
}
catch(Errore)
{
//Handleorre-throwe...
}
而且你在这个里处置了一切大概的非常。你不必要在这里加上任何捕捉java.io.IOException的非常,由于IFoo完成没有从IFoo.bar()中抛出它,对吗?(现实上,假如你加上了捕捉java.io.IOException非常块,编译器大概会把它作为不成抵达的非常而抛弃)
毛病。在我写的EvilFoo类中bar()办法证实了将抛出你传送给类机关器的任何非常:
publicvoidbar()
{
EvilThrow.throwThrowable(m_throwthis);
}
运转Main办法:
publicclassMain
{
publicstaticvoidmain(finalString[]args)
{
//Thistry/catchblockappearstointerceptallexceptionsthat
//IFoo.bar()canthrow;however,thisisnottrue
try
{
IFoofoo=newEvilFoo(newjava.io.IOException("SURPRISE!"));
foo.bar();
}
catch(RuntimeExceptionioe)
{
//Ignoreioe
}
catch(Errore)
{
//Ignoree
}
}
}//Endofclass
你将看到从bar()办法抛出的java.io.IOException非常实例而且没有任何捕捉块:
>java-cpclassesMain
Exceptioninthread"main"java.io.IOException:SURPRISE!
atMain.main(Main.java:23)
<p>
从一个编程语言的普及程度来将,一个好的IDE是至关中要的,而现在的java的IDE虽然已经很好了,但是和.net网页编程比起来还是稍微差一些的,这是个客观事实。java要想普及的更好。DE是必须加以改进的。 |
|