??????????我這個(gè)人有時(shí)比較粗心大意,天生對(duì)一些記憶性的東西容易搞錯(cuò),比如到底一個(gè)判斷方法執(zhí)行后返回值是true還是false,一個(gè)if判斷條件應(yīng)該為真時(shí)執(zhí)行{}內(nèi)語(yǔ)句還是假時(shí)有時(shí)候經(jīng)常搞不清楚。
?????????今天作的程序中有一個(gè)需要判斷一個(gè)變量是否為空,如果不為空并執(zhí)行一個(gè)特定語(yǔ)句的程序,我就馬馬虎虎寫(xiě)成了如果為空則執(zhí)行這個(gè)語(yǔ)句。郁悶!!老是犯這類錯(cuò)誤!
?????????今天的程序中有檢查出一個(gè)錯(cuò)誤,本來(lái)應(yīng)該這樣執(zhí)行的程序:如果一次不成功則執(zhí)行第二次,第二次不成功則執(zhí)行第三次,如果第三次不成功則執(zhí)行一個(gè)特定操作。修改后代碼如下:

?if?(contents?==?null?||?contents?==?"")?
{
????????????????????Thread.sleep(100);
????????????????????contents?=?this.getContent(a,?b);
????????????????}?

????????????????if?(contents?==?null?||?contents?==?"")?
{
????????????????????Thread.sleep(200);
????????????????????contents?=?this.getContent(a,?b);
????????????????}?

????????????????if?(contents?==?null?||?contents?==?"")?
{
????????????????????contents?=?"出錯(cuò)提示和幫助免責(zé)信息";
????????????????}原來(lái)錯(cuò)誤代碼:

?if?(contents?==?null?||?contents?==?"")?
{
????????????????????Thread.sleep(100);
????????????????????contents?=?this.getContent(a,?b);

????????????????}else?if?(contents?==?null?||?contents?==?"")?
{
????????????????????Thread.sleep(200);
????????????????????contents?=?this.getContent(a,?b);

????????????????}else?if?(contents?==?null?||?contents?==?"")?
{
????????????????????contents?=?"出錯(cuò)提示和幫助免責(zé)信息";
????????????????}
錯(cuò)誤的方法使得程序沒(méi)有達(dá)到一次達(dá)不到目的重試兩次的目的簡(jiǎn)直返暈,竟然犯這種處級(jí)以下錯(cuò)誤。
?
private
?String?A(Data?data)?
{

????String?processClassName?
=
?
null
;?
//
要通過(guò)配置文件讀取的類名

????
//
讀取配置文件
????
try
?
{
??????appconfig?c?
=
?appconfig.getInstance(
"
appConfig
"
);
??????c.setConfigFile(
new
?File(
"
./config/appConfig.txt
"
));
??????processClassName?
=
?c.get(
"
aaa.
"
?
+
?data.To?
+
???????????????????????????????
"
.class
"
);
????}
????
catch
?(NullPointerException?ef)?
{
??????ef.printStackTrace();
??????
return
?
null
;
????}
????
catch
?(IllegalStateException?ex)?
{
??????ex.printStackTrace();
??????
return
?
"
幫助信息
"
;
????}
????
catch
?(Exception?ef)?
{
??????ef.printStackTrace();
??????
return
?
null
;
????}
????
//
判斷服務(wù)類是否已經(jīng)配置
????
if
?(processClassName?
==
?
null
)?
{
??????System.out.println(
"
尚未配置
"
?
+
?MMSTo?
+
?
"
的服務(wù)類
"
);
??????
return
?
null
;
????}
????
//
取得相應(yīng)處理執(zhí)行類
????AIFC?aifc?
=
?
null
;

????
try
?
{
??????Class?BClass?
=
?Class.forName(processClassName);
??????aifc?
=
?(AIFC?)?BClass.newInstance();
????}
????
catch
?(ClassNotFoundException?e)?
{
??????e.printStackTrace();
??????
return
?
null
;
????}
????
catch
?(InstantiationException?e)?
{
??????e.printStackTrace();
??????
return
?
null
;
????}
????
catch
?(IllegalAccessException?e)?
{
??????e.printStackTrace();
??????
return
?
null
;
????}
????String?content?
=
?
""
;

????
try
?
{
??????content?
=
?aifc?.getContent(mmsdata.sd,?????????????????????????mmsdata.To);
????}
????
catch
?(Exception?ef)?
{
??????ef.printStackTrace();
??????
return
?
null
;
????}
????
return
?content;
??}
方法中讀取配置文件時(shí)情況比較復(fù)雜,有多種可能出現(xiàn)的異常,如果不能很好的拋出和捕捉異常會(huì)導(dǎo)致程序的非正常退出或中斷,如果此方法為掃描方法,那么將無(wú)法進(jìn)行下面的操作。但各種異常產(chǎn)生的原因不同,有需要區(qū)分不同情況以對(duì)程序進(jìn)行控制。但是調(diào)用此方法的對(duì)象只能通過(guò)返回值一種途徑對(duì)不同情況進(jìn)行判斷。所以在捕捉不同異常同時(shí)又需要進(jìn)行返回不同結(jié)果的設(shè)計(jì)。這也是一種捕獲異常而不中斷程序的一種方法。
?????????今天作的程序中有一個(gè)需要判斷一個(gè)變量是否為空,如果不為空并執(zhí)行一個(gè)特定語(yǔ)句的程序,我就馬馬虎虎寫(xiě)成了如果為空則執(zhí)行這個(gè)語(yǔ)句。郁悶!!老是犯這類錯(cuò)誤!
?????????今天的程序中有檢查出一個(gè)錯(cuò)誤,本來(lái)應(yīng)該這樣執(zhí)行的程序:如果一次不成功則執(zhí)行第二次,第二次不成功則執(zhí)行第三次,如果第三次不成功則執(zhí)行一個(gè)特定操作。修改后代碼如下:
































錯(cuò)誤的方法使得程序沒(méi)有達(dá)到一次達(dá)不到目的重試兩次的目的簡(jiǎn)直返暈,竟然犯這種處級(jí)以下錯(cuò)誤。
下面一段代碼是通過(guò)配置文件讀取類名,取得相應(yīng)的處理類的方法實(shí)例,方法要返回字符串形式的值。


















































































方法中讀取配置文件時(shí)情況比較復(fù)雜,有多種可能出現(xiàn)的異常,如果不能很好的拋出和捕捉異常會(huì)導(dǎo)致程序的非正常退出或中斷,如果此方法為掃描方法,那么將無(wú)法進(jìn)行下面的操作。但各種異常產(chǎn)生的原因不同,有需要區(qū)分不同情況以對(duì)程序進(jìn)行控制。但是調(diào)用此方法的對(duì)象只能通過(guò)返回值一種途徑對(duì)不同情況進(jìn)行判斷。所以在捕捉不同異常同時(shí)又需要進(jìn)行返回不同結(jié)果的設(shè)計(jì)。這也是一種捕獲異常而不中斷程序的一種方法。
???????? 靜態(tài)代碼塊(static block ),不包含在任何方法體中當(dāng)類被載入時(shí),自動(dòng)執(zhí)行靜態(tài)代碼塊,且只被執(zhí)行一次經(jīng)常用于類屬性的初始化。 這是網(wǎng)上通行的關(guān)于靜態(tài)代碼塊的定義。
???????? 在Java中,類裝載器把一個(gè)類裝入Java虛擬機(jī)中,要經(jīng)過(guò)三個(gè)步驟來(lái)完成:裝載、鏈接和初始化,其中鏈接又可以分成校驗(yàn)、準(zhǔn)備和解析三步,除了解析外,其它步驟是嚴(yán)格按照順序完成的,各個(gè)步驟的主要工作如下:
- 裝載:查找和導(dǎo)入類或接口的二進(jìn)制數(shù)據(jù);
- 鏈接:執(zhí)行下面的校驗(yàn)、準(zhǔn)備和解析步驟,其中解析步驟是可以選擇的;
- 校驗(yàn):檢查導(dǎo)入類或接口的二進(jìn)制數(shù)據(jù)的正確性;
- 準(zhǔn)備:給類的靜態(tài)變量分配并初始化存儲(chǔ)空間;
- 解析:將符號(hào)引用轉(zhuǎn)成直接引用;
- 初始化:激活類的靜態(tài)變量的初始化Java代碼和靜態(tài)Java代碼塊。
初始化類中屬性是靜態(tài)代碼塊的常用用途,但只能使用一次。
| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
28 | 29 | 30 | 31 | 1 | 2 | 3 | |||
4 | 5 | 6 | 7 | 8 | 9 | 10 | |||
11 | 12 | 13 | 14 | 15 | 16 | 17 | |||
18 | 19 | 20 | 21 | 22 | 23 | 24 | |||
25 | 26 | 27 | 28 | 29 | 30 | 1 | |||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
我正在讀
常用鏈接
留言簿(1)
隨筆檔案
我的其他博客
- .net 博客
- 寫(xiě)我學(xué)習(xí)使用.net 的點(diǎn)點(diǎn)滴滴
搜索
最新評(píng)論

- 1.?re: 今天又犯了這個(gè)錯(cuò)誤,氣憤!!
- ajax? 日了.
- --theone
- 2.?re: 今天又犯了這個(gè)錯(cuò)誤,氣憤!!
- 這個(gè)網(wǎng)站不錯(cuò)嘛
- --theone
- 3.?re: 今天又犯了這個(gè)錯(cuò)誤,氣憤!!
- 傻得可愛(ài)
- --theone